SusAbilityBar

水平技能栏 — 重建子级 SusAbilitySlot,从 SusHudAbilityData 填充数据,非按住模式下数字键 1…N 可激活对应技能。
包
SusGame · HUD(商业)
SusGame · HUD
属性
| 名称 | 类型 | 默认值 | |
|---|---|---|---|
SlotCount | Prop<int> | 4 | |
UseHold | Prop<bool> | false |
插槽
没有插槽。
事件
| 名称 | 字段 | 载荷 |
|---|---|---|
AbilityActivated | OnAbilityActivated | int |
AbilityHoldComplete | OnAbilityHoldComplete | int |
样式钩子
USS 类契约 — 无需改 C# 即可覆盖外观。状态通过这些类切换:
breakpoint-smsus-ability-bar
用法
在代码中通过 SetAbilities 驱动槽位内容。XML 只设置布局 / 模式相关的属性。
csharp
var bar = new SusAbilityBar();
bar.SlotCount.Value = 4;
bar.UseHold.Value = false;
bar.OnAbilityActivated += index => { /* cast / spend AP */ };
bar.OnAbilityHoldComplete += index => { /* charged cast */ };
bar.SetAbilities(new List<SusHudAbilityData>
{
new() { Id = "strike", Icon = "sword", Title = "Strike", Keybind = "1" },
new() { Id = "heal", Icon = "plus", Title = "Heal", Cooldown01 = 0.4f, CooldownText = "2s" },
new() { Id = "shield", Icon = "shield", Title = "Guard", Disabled = true },
});xml
<template>
<sus:SusAbilityBar :SlotCount="Slots.Value"
:UseHold="Hold.Value"
@ability-activated="OnAbilityActivated"
@ability-hold-complete="OnAbilityHoldComplete" />
</template>
<script>
public Prop<int> Slots = new(4);
public Prop<bool> Hold = new(false);
void OnAbilityActivated(int index) { /* … */ }
void OnAbilityHoldComplete(int index) { /* … */ }
// Call SetAbilities / UpdateAbility from combat code after mount.
</script>| Prop / API | 作用 |
|---|---|
SlotCount | 槽位数量(1…10,默认 4) |
UseHold | 将按住模式传播到每个槽位 |
SetAbilities(list) | 调整大小并从 SusHudAbilityData 填充 |
UpdateAbility(i, data) | 更新单个槽位 |
GetSlot(i) | 访问子级 SusAbilitySlot |
OnAbilityActivated | 被激活槽位的索引 |
OnAbilityHoldComplete | 按住完成后的索引 |
备注
- 在调用
SetAbilities(或宿主 / Assembler 填充槽位)之前为空。挂载前调用会排队,直到Mounted。 SusHudAbilityData:Id、Icon、Title、Description、Cooldown01(0表示就绪 …1表示满冷却)、CooldownText、Disabled,以及可选的Keybind(为空 → 索引+1)。- 当需要统一的按键约定时,优先使用该组件,而不是手动拼装大量 SusAbilitySlot 实例。