跳转到内容

SusInventoryItem

SusInventoryItem

网格中的物品:图标、稀有度边框、堆叠数、耐久度、拖放、右键菜单。

SusGame · 库存(商业)

在 Playground 中打开

SusGame · Inventory

属性

名称类型默认值
IconProp<string>""v-model
RarityProp<string>"common"v-model
StackCountProp<int>1v-model
DurabilityProp<float>100fv-model
IsEquippedProp<bool>falsev-model
IsDraggingProp<bool>falsev-model
IsSelectedProp<bool>falsev-model
MediaModeProp<string>"image"v-model

插槽

没有插槽。

事件

名称字段载荷
DragStartOnDragStartSusInventoryItem
DragEndOnDragEndSusInventoryItem
DraggingOnDraggingSusInventoryItem, Vector2
ItemClickedOnItemClickedSusInventoryItem
ContextActionOnContextActionstring, SusInventoryItem

样式钩子

USS 类契约 — 无需改 C# 即可覆盖外观。状态通过这些类切换:

  • sus-img
  • sus-img__error
  • sus-img__placeholder
  • sus-img__surface
  • sus-img--rounded-md
  • sus-img--rounded-sm
  • sus-inventory-item
  • sus-inventory-item__durability-fill
  • sus-inventory-item__durability-fill--good
  • sus-inventory-item__durability-fill--low
  • sus-inventory-item__durability-fill--warn
  • sus-inventory-item__durability-track
  • sus-inventory-item__glyph
  • sus-inventory-item__image
  • sus-inventory-item__stack
  • sus-inventory-item__tip
  • sus-inventory-item--dragging
  • sus-inventory-item--equipped
  • sus-inventory-item--long-press
  • sus-inventory-item--media-icon
  • sus-inventory-item--media-image
  • sus-inventory-item--rarity-common
  • sus-inventory-item--rarity-epic
  • sus-inventory-item--rarity-exotic
  • sus-inventory-item--rarity-legendary
  • sus-inventory-item--rarity-rare
  • sus-inventory-item--rarity-uncommon
  • sus-inventory-item--selected
  • sus-tooltip--inventory

用法

优先通过 SusInventorySession 使用父组件 SusInventory — 不要在没有网格 / model 的情况下放置孤立物品。网格绘制会自动设置 Item / Def / icon 属性。

csharp
// Session mounts SusInventory; items get Def + DnD + tooltip automatically
var session = SusInventorySession.Attach(host);
session.Configure(SusInventorySystemParams.PackedGrid);
session.SetCatalog(defs);
session.SeedItems(seeds);
session.Apply();

独立外观(Storybook / 自定义图标):

csharp
var item = new SusInventoryItem();
item.Icon.Value = "SusGameDemo/Items/sword";
item.Rarity.Value = "rare";
item.StackCount.Value = 3;
item.Durability.Value = 72f;
item.MediaMode.Value = "image"; // image | icon
item.IsEquipped.Value = false;
item.IsSelected.Value = false;
item.Def = itemDef;             // tooltip content
item.OnItemClicked += ii => { /* select */ };
item.OnContextAction += (action, ii) => { /* equip|unequip|delete */ };
xml
<template>
  <sus:SusInventoryItem :Icon="Icon.Value"
                        :Rarity="Rarity.Value"
                        :StackCount="Stack.Value"
                        :Durability="Dura.Value"
                        :MediaMode="Media.Value"
                        :IsEquipped="Eq.Value"
                        :IsSelected="Sel.Value" />
</template>

<script>
public Prop<string> Icon = new("SusGameDemo/Items/sword");
public Prop<string> Rarity = new("rare");
public Prop<int> Stack = new(3);
public Prop<float> Dura = new(72f);
public Prop<string> Media = new("image");
public Prop<bool> Eq = new(false);
public Prop<bool> Sel = new(false);
</script>
Prop / API作用
IconResources 路径(图片)或图标集 key(MediaMode=icon
Raritycommonexotic → BEM --rarity-*
StackCount> 1 时显示徽章
Durability0…100;为 100 时隐藏进度条
IsEquipped / IsDragging / IsSelected状态类
MediaModeimage(SusImg 填充)| icon(SusIcon 字形)
Item / DefModel 引用(tooltip + 拖放身份)
OnDrag* / OnItemClicked / OnContextAction指针与菜单

悬停提示

使用 SusTooltip(OverlayHost Tooltip 图层)。原生 UITK 的 tooltip 会被清除。 内容来自 ItemDef(名称、稀有度 · 分类 · 子分类、描述、重量、修饰符)。 时机 / 行数由父组件 SusInventorySystemParams 决定。

备注

  • 上下文操作:equip | unequip | delete
  • 拖动阈值 / ghost host 来自父级网格 / 外壳 — 在拖放前设置 GhostHost
  • 优先使用 Session 而非孤立物品,以保持 rarity / tooltip / 拖放的一致性。

相关