技能树定义 (<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 字段**。
unlockedHediffsHediff定义数组可选。解锁此技能后获得的 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> 元素可以引用一个已定义的 Hediff defName 或直接进行匿名定义。
  • 数组定义方式
    <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>