技能配置系统允许通过JSON配置文件来管理技能节点的数值和钻石消耗,而不是在代码中硬编码这些数值。这使得游戏平衡调整变得更加灵活和方便。
assets/
├── resources/
│ └── data/
│ └── skill_config.json # 技能配置文件
└── scripts/
└── FourUI/
└── SkillSystem/
├── SkillConfigManager.ts # 技能配置管理器
├── SkillNodeGenerator.ts # 技能节点生成器(已修改)
└── PersistentSkillManager.ts # 持久化技能管理器(已修改)
{
"skillTypes": [
{
"id": 0,
"name": "Damage",
"displayName": "伤害",
"nameTemplate": "Damage +{}%",
"type": "damage"
},
{
"id": 1,
"name": "Ball Speed",
"displayName": "球速",
"nameTemplate": "Ball Speed +{}%",
"type": "ball_speed"
},
{
"id": 2,
"name": "Crit Damage",
"displayName": "暴击伤害",
"nameTemplate": "Crit Damage +{}%",
"type": "crit_damage"
}
],
"skillGroups": [
{
"group": 1,
"effectPercent": 5,
"diamondCost": 10
},
{
"group": 2,
"effectPercent": 10,
"diamondCost": 20
}
// ... 更多组配置
],
"totalGroups": 12,
"skillsPerGroup": 3
}
id: 技能类型ID(对应skillIndex)name: 技能英文名称displayName: 技能中文显示名称nameTemplate: 技能名称模板,{}会被替换为效果百分比type: 技能类型标识符(用于内部逻辑)group: 技能组编号(1-12)effectPercent: 该组技能的效果百分比diamondCost: 解锁该组技能需要的钻石数量totalGroups: 总技能组数skillsPerGroup: 每组技能数量技能配置管理器,负责加载和管理JSON配置数据。
主要方法:
getInstance(): 获取单例实例getSkillConfig(): 获取完整配置getSkillName(skillIndex, group): 获取技能名称getSkillCost(group): 获取技能消耗getSkillEffectPercent(group): 获取技能效果百分比waitForLoad(): 等待配置加载完成编辑 assets/resources/config/skill_config.json 文件:
{
"skillGroups": [
{
"group": 1,
"effectPercent": 8, // 修改效果百分比
"diamondCost": 15 // 修改钻石消耗
}
]
}
在 skillTypes 数组中添加新的技能类型:
{
"id": 3,
"name": "Attack Speed",
"displayName": "攻击速度",
"nameTemplate": "Attack Speed +{}%",
"type": "attack_speed"
}
修改 totalGroups 和相应的 skillGroups 数组:
{
"totalGroups": 15, // 增加到15组
"skillGroups": [
// 添加第13-15组的配置
{
"group": 13,
"effectPercent": 65,
"diamondCost": 130
}
]
}
使用 SkillConfigTest 脚本来验证配置系统是否正常工作:
SkillConfigTest 组件添加到场景中的节点waitForLoad()配置加载失败
resources/config/skill_config.json技能显示异常
skillTypes 配置是否完整nameTemplate 包含 {} 占位符skillGroups 配置是否包含所需的组钻石消耗不正确
skillGroups 中的 diamondCost 配置SkillConfigTest 脚本进行全面测试