SusAbilityBar

水平技能栏 — 重建子级 SusAbilitySlot,从 SusHudAbilityData 填充数据,非按住模式下数字键 1…N 可激活对应技能。
包
SusGame · HUD(商业)
SusGame · HUD
属性
| 名称 | 类型 | 默认值 | |
|---|---|---|---|
SlotCount | Prop<int> | 4 | |
UseHold | Prop<bool> | false | |
KeyScope | Prop<string> | "focus" |
插槽
没有插槽。
事件
| 名称 | 字段 | 载荷 |
|---|---|---|
AbilityActivated | OnAbilityActivated | int |
AbilityHoldComplete | OnAbilityHoldComplete | int |
样式钩子
USS 类契约 — 无需改 C# 即可覆盖外观。状态通过这些类切换:
sus-ability-barsus-hidden
用法
在代码中通过 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 | 按住完成后的索引 |
ActivateSlot(i) | 从你自己的输入激活槽位 i——与点击相同 |
KeyScope | 技能栏在哪里监听按键:"focus"(默认)或 "panel" |
技能按键
默认情况下,技能输入留在游戏一侧:你的游戏读取自己的输入并调用 ActivateSlot(index)。该调用的效果与点击完全相同——会触发 OnAbilityActivated,除非该槽位是按住槽位、已禁用或处于冷却中。
csharp
// in your input handler
if (Input.GetKeyDown(KeyCode.Q)) bar.ActivateSlot(0);KeyScope 决定技能栏自身在哪里监听按键:
"focus"(默认):数字 1–9(主键盘顶行或小键盘)激活第 N-1 个槽位,但仅在技能栏拥有焦点时有效。战斗中焦点通常在别处,因此这些按键在那里不起作用。"panel":技能栏在挂接期间监听整个 panel,无需焦点。按下的键会与每个槽位的Keybind字符串匹配——数字、字母或KeyCode名称,例如F1。在文本字段中输入的按键会被忽略,按住槽位不会被按键激活,并且只有绑定到槽位的按键才会停止传播。
备注
- 在调用
SetAbilities(或宿主 / Assembler 填充槽位)之前为空。挂载前调用会排队,直到Mounted。 SusHudAbilityData:Id、Icon、Title、Description、Cooldown01(0表示就绪 …1表示满冷却)、CooldownText、Disabled,以及可选的Keybind(为空 → 索引+1)。- 当需要统一的按键约定时,优先使用该组件,而不是手动拼装大量 SusAbilitySlot 实例。