SusInventoryTabBar

网格标签栏 — 每个 InventoryGridDef 对应一个标签,点击切换 ActiveGridId,悬停支持拖拽经过时切换标签。
包
SusGame · 库存(商业)
SusGame · Inventory
属性
没有公开属性。
插槽
没有插槽。
事件
| 名称 | 字段 | 载荷 |
|---|---|---|
GridChanged | OnGridChanged | string |
TabHover | OnTabHover | string |
样式钩子
USS 类契约 — 无需改 C# 即可覆盖外观。状态通过这些类切换:
sus-inventory-tabbarsus-inventory-tabbar__tabsus-inventory-tabbar__tab--activesus-inventory-tabbar__tab-iconsus-inventory-tabbar__tab-label
用法
由列表驱动:赋值 GridDefs,设置 ActiveGridId,调用 RebuildTabs(挂载时也会重建)。当你需要明确的背包标签时,接入自定义外壳。
csharp
var tabs = new SusInventoryTabBar();
tabs.GridDefs = new List<InventoryGridDef>
{
new() { Id = "bag", Name = "Backpack", Icon = "backpack", Width = 10, Height = 8 },
new() { Id = "loot", Name = "Loot", Icon = "chest", Width = 6, Height = 4 },
};
tabs.ActiveGridId = "bag";
tabs.OnGridChanged += id => { /* SusInventory.SetActiveGrid(id) */ };
tabs.OnTabHover += id => { /* drag-over switch */ };
tabs.RebuildTabs();xml
<template>
<sus:SusInventoryTabBar />
</template>
<script>
// No Prop<> — fill GridDefs / ActiveGridId from C#, then RebuildTabs.
void OnGridChanged(string gridId) { /* … */ }
void OnTabHover(string gridId) { /* … */ }
</script>| Prop / API | 作用 |
|---|---|
GridDefs | 标签来源(Id、Name、可选 Icon) |
ActiveGridId | 选中的标签(USS --active) |
RebuildTabs() | 清空并重建标签按钮 |
OnGridChanged | 点击 → 新的 grid id |
OnTabHover | 指针进入(拖拽经过) |
备注
- 当前
SusInventory的背包布局使用双网格(主 + 次,按 SortOrder 排序)— 模板中没有标签。TabBarHost(.sus-inventory__tabs)可能为 null;如需多背包标签,请自行挂载此组件。 - 可选的
def.Icon会在标签前渲染一个小的SusIcon。 - 当外壳负责切换时,优先使用 Session 的
SetActiveGrid/OnTabChanged。