跳转到内容

SusAbilityBar ​

SusAbilityBar

水平技能栏 — 重建子级 SusAbilitySlot,从 SusHudAbilityData 填充数据,非按住模式下数字键 1…N 可激活对应技能。

包

SusGame · HUD(商业)

在 Playground 中打开

SusGame · HUD

属性

名称类型默认值
SlotCountProp<int>4
UseHoldProp<bool>false
KeyScopeProp<string>"focus"

插槽

没有插槽。

事件

名称字段载荷
AbilityActivatedOnAbilityActivatedint
AbilityHoldCompleteOnAbilityHoldCompleteint

样式钩子 ​

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

  • sus-ability-bar
  • sus-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 实例。