You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dulst中为卡牌添加除Atk、Health外的新主属性

Dulst引擎自定义卡牌主属性实现步骤

1. 注册新属性的全局元数据

首先在项目的CardDataDefs.js(或你的卡牌数据定义入口文件)中新增属性注册配置,这里以新增「法力消耗(Mana)」属性为例:

// 在全局卡牌属性注册区段新增代码
Dulst.Card.registerPrimaryAttribute({
  key: "mana",
  displayName: "法力值",
  valueType: "number", // 可选值:number/string/enum
  defaultValue: 0,
  // 配置属性排序优先级,数值越高显示顺序越靠前
  sortOrder: 1,
  // 配置属性是否参与数据同步、存档导出
  syncable: true
})

如果你的属性是枚举类型,需要额外新增enumValues字段配置可选值和对应显示名

2. 配置鼠标悬停详情页的显示规则

在CardTooltip.js(悬停提示组件配置文件)中新增属性渲染逻辑:

  • 找到悬停详情的属性渲染区段,在Atk、Health属性的渲染逻辑后插入新增属性的渲染代码:
if (card.mana !== undefined) {
  tooltipElement.append(`
    <div class="tooltip-attr-row">
      <span class="attr-label">法力值</span>
      <span class="attr-value">${card.mana}</span>
    </div>
  `)
}

如果需要给属性加特殊样式,在对应css文件中新增.tooltip-attr-row .attr-label.mana的样式规则即可。

3. 配置场地卡牌容器的显示逻辑

在BoardCard.js(场地卡牌容器组件)中新增属性的渲染配置:

  • 首先在卡牌容器的模板中预留属性显示的位置,然后在数据更新钩子中写入属性值:
// BoardCard组件的render方法中,在Atk、Health的渲染逻辑旁新增
const manaBadge = document.createElement('div')
manaBadge.className = 'card-badge mana-badge'
manaBadge.textContent = this.cardData.mana
this.element.appendChild(manaBadge)

// 监听卡牌属性变更事件,实现属性值实时更新
Dulst.Event.on('card:attrUpdate:mana', (cardId, newValue) => {
  if (this.cardData.id === cardId) {
    this.element.querySelector('.mana-badge').textContent = newValue
  }
})

如果你需要属性显示在卡牌的特定位置,调整css中mana-badge的定位参数即可

4. 数据绑定与测试

在你的卡牌csv/json配置表中新增mana列,填入对应卡牌的数值,启动游戏后验证两项显示要求:

  • 鼠标悬停卡牌时,详情页正确显示法力值属性
  • 卡牌放置到场地上后,卡牌容器上正确显示法力值角标
  • 修改卡牌的mana属性值,两个位置的显示会同步更新

内容的提问来源于stack exchange,提问作者Xha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:24:00