技能树定义 (<SkillTreeDef>)
功能说明
技能树定义用于构建游戏中的技能树系统,它定义了技能树中的独立节点。每个技能节点可以有特定的标签 (tag)、在用户界面中的位置 (position)、解锁所需的成本 (cost),并可选地绑定到特定阵营 (faction)。更重要的是,每个技能节点可以定义一系列前置技能 (prerequisites),以及成功解锁后能带来的增益,例如解锁新的武器 (unlockedWeapons) 或获得特定的状态效果/增益/减益 (unlockedHediffs)。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 必需。该技能树节点定义的唯一标识符。 |
label | 字符串 | (空) | 可选。该技能节点在游戏中显示的名称。 |
description | 字符串 | (空) | 可选。该技能节点的详细描述。 |
tag | 字符串 | Default | 可选。用于对技能进行分类或分组的标签(例如:"Combat", "Crafting", "Exploration")。 |
position | 字符串 | (空) | 可选。该技能节点在技能树UI中的相对位置,通常为"X,Y"格式(如"100,50")。 |
cost | 整数 | 10 | 可选。解锁该技能节点所需消耗的资源点数或其他成本。 |
faction | 定义 | 无 | 可选。指定此技能节点仅对特定 阵营定义 生效。可以是引用或匿名定义。详见下文**faction 字段**。 |
prerequisites | 技能树定义数组 | 无 | 可选。解锁此技能节点前必须先解锁的所有 技能树定义 数组。可以是引用或匿名定义。详见下文**prerequisites 字段**。 |
unlockedWeapons | 武器定义数组 | 无 | 可选。解锁此技能后获得的 武器定义 数组。可以是引用或匿名定义。详见下文**unlockedWeapons 字段**。 |
unlockedHediffs | Hediff定义数组 | 无 | 可选。解锁此技能后获得的 Hediff 定义 数组(如增益状态、新能力等)。可以是引用或匿名定义。详见下文**unlockedHediffs 字段**。 |
示例
这是一个完整的技能树定义示例,展示了不同技能节点之间的依赖关系以及解锁内容:
<Define>
<!-- 阵营定义 (如果需要) -->
<AffiliationDef>
<defName>PlayerFaction</defName>
<label>玩家阵营</label>
</AffiliationDef>
<!-- 武器定义 (如果需要) -->
<WeaponDef>
<defName>BasicPistol</defName>
<label>基础手枪</label>
<!-- ...其他武器属性... -->
</WeaponDef>
<WeaponDef>
<defName>AdvancedRifle</defName>
<label>高级步枪</label>
<!-- ...其他武器属性... -->
</WeaponDef>
<!-- Hediff 定义 (如果需要) -->
<HediffDef>
<defName>IncreasedHealthBuff</defName>
<label>生命值强化</label>
<!-- ...其他Hediff属性... -->
</HediffDef>
<HediffDef>
<defName>FastReloadBuff</defName>
<label>快速换弹</label>
<!-- ...其他Hediff属性... -->
</HediffDef>
<!-- 技能树节点定义 -->
<SkillTreeDef>
<defName>BasicCombat</defName>
<label>基础战斗训练</label>
<description>提高基础战斗能力。</description>
<tag>Combat</tag>
<position>100,100</position>
<cost>5</cost>
<faction>PlayerFaction</faction> <!-- 引用阵营 -->
<unlockedWeapons>
<li>BasicPistol</li> <!-- 解锁基础手枪 -->
</unlockedWeapons>
<unlockedHediffs>
<li>
<!-- 匿名定义一个生命值强化 Hediff -->
<defName>MinorHealthBoost</defName>
<label>微量生命值提升</label>
<description>永久提升少量生命值上限。</description>
<isPermanent>true</isPermanent>
<effect>HealthMax_Add_5</effect>
</li>
</unlockedHediffs>
</SkillTreeDef>
<SkillTreeDef>
<defName>AdvancedMarksmanship</defName>
<label>高级射击技巧</label>
<description>解锁高级武器并提高射击精度。</description>
<tag>Combat</tag>
<position>250,150</position>
<cost>15</cost>
<faction>PlayerFaction</faction>
<prerequisites>
<li>BasicCombat</li> <!-- 前置技能:基础战斗训练 -->
</prerequisites>
<unlockedWeapons>
<li>AdvancedRifle</li> <!-- 解锁高级步枪 -->
</unlockedWeapons>
<unlockedHediffs>
<li>FastReloadBuff</li> <!-- 解锁快速换弹 Hediff -->
</unlockedHediffs>
</SkillTreeDef>
<SkillTreeDef>
<defName>MedicalExpertise</defName>
<label>医疗专精</label>
<description>提高医疗效率和治疗能力。</description>
<tag>Support</tag>
<position>100,300</position>
<cost>10</cost>
<faction>PlayerFaction</faction>
<unlockedHediffs>
<li>
<!-- 匿名定义一个治疗效果提升 Hediff -->
<defName>HealingEfficiency</defName>
<label>治疗效率提升</label>
<effect>HealingRate_Multiply_1.2</effect>
<description>治疗物品和能力效果提高20%。</description>
</li>
</unlockedHediffs>
</SkillTreeDef>
</Define>
复杂参数说明
faction 字段 (阵营定义)
- 说明:可选。指定此技能节点仅对特定 阵营定义 内的实体生效或可见。
- 引用方式:
<faction>AffiliationDef的defName</faction> - 匿名定义方式:
<faction> <defName>AncientRace</defName> <label>古老文明</label> <description>一个古老而神秘的阵营。</description> <!-- ...更多阵营属性... --> </faction>
prerequisites 字段 (技能树定义数组)
- 说明:这是一个数组,包含了解锁当前技能节点所需要预先解锁的所有 技能树定义。数组中的每个
<li>元素可以引用一个已定义的技能树defName或直接进行匿名定义。 - 数组定义方式:
<prerequisites> <li>RequiredSkillOne</li> <!-- 引用前置技能 --> <li>RequiredSkillTwo</li> <li> <!-- 匿名定义一个简单前置技能 --> <defName>MinorEndurance</defName> <label>小幅耐力</label> <cost>2</cost> </li> </prerequisites>
unlockedWeapons 字段 (武器定义数组)
- 说明:这是一个数组,包含了成功解锁当前技能节点后,玩家将(或可以)获得的 武器定义。数组中的每个
<li>元素可以引用一个已定义的武器defName或直接进行匿名定义。 - 数组定义方式:
<unlockedWeapons> <li>PlasmaRifle</li> <!-- 解锁等离子步枪 --> <li> <!-- 匿名定义一个临时解锁的武器 --> <defName>TemporaryFlamethrower</defName> <label>临时火焰喷射器</label> <duration>600</duration> <!-- 可用时间 --> <!-- ...其他武器属性... --> </li> </unlockedWeapons>
unlockedHediffs 字段 (Hediff定义数组)
- 说明:这是一个数组,包含了成功解锁当前技能节点后,实体将获得的所有 Hediff 定义(状态效果、增益、减益、新能力等)。数组中的每个
<li>元素可以引用一个已定义的 HediffdefName或直接进行匿名定义。 - 数组定义方式:
<unlockedHediffs> <li>AdrenalineRush</li> <!-- 解锁肾上腺素激增状态 --> <li> <!-- 匿名定义一个移动速度提升 Hediff --> <defName>EnhancedSpeed</defName> <label>增强速度</label> <isPermanent>true</isPermanent> <effect>MoveSpeed_Multiply_1.1</effect> <description>永久提升10%移动速度。</description> </li> </unlockedHediffs>