# 技能配置系统使用说明 ## 概述 技能配置系统允许通过JSON配置文件来管理技能节点的数值和钻石消耗,而不是在代码中硬编码这些数值。这使得游戏平衡调整变得更加灵活和方便。 ## 文件结构 ``` assets/ ├── resources/ │ └── data/ │ └── skill_config.json # 技能配置文件 └── scripts/ └── FourUI/ └── SkillSystem/ ├── SkillConfigManager.ts # 技能配置管理器 ├── SkillNodeGenerator.ts # 技能节点生成器(已修改) └── PersistentSkillManager.ts # 持久化技能管理器(已修改) ``` ## 配置文件格式 ### skill_config.json ```json { "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 } ``` ### 配置字段说明 #### skillTypes(技能类型配置) - `id`: 技能类型ID(对应skillIndex) - `name`: 技能英文名称 - `displayName`: 技能中文显示名称 - `nameTemplate`: 技能名称模板,{}会被替换为效果百分比 - `type`: 技能类型标识符(用于内部逻辑) #### skillGroups(技能组配置) - `group`: 技能组编号(1-12) - `effectPercent`: 该组技能的效果百分比 - `diamondCost`: 解锁该组技能需要的钻石数量 #### 全局配置 - `totalGroups`: 总技能组数 - `skillsPerGroup`: 每组技能数量 ## 核心类说明 ### SkillConfigManager 技能配置管理器,负责加载和管理JSON配置数据。 **主要方法:** - `getInstance()`: 获取单例实例 - `getSkillConfig()`: 获取完整配置 - `getSkillName(skillIndex, group)`: 获取技能名称 - `getSkillCost(group)`: 获取技能消耗 - `getSkillEffectPercent(group)`: 获取技能效果百分比 - `waitForLoad()`: 等待配置加载完成 ### 修改的现有类 #### SkillNodeGenerator - 现在从SkillConfigManager加载技能配置 - 支持动态的技能组数和每组技能数 - 自动等待配置加载完成 #### PersistentSkillManager - 技能消耗计算现在使用配置数据 - 技能显示名称从配置获取 - 保持向后兼容性 ## 使用方法 ### 1. 修改技能配置 编辑 `assets/resources/config/skill_config.json` 文件: ```json { "skillGroups": [ { "group": 1, "effectPercent": 8, // 修改效果百分比 "diamondCost": 15 // 修改钻石消耗 } ] } ``` ### 2. 添加新技能类型 在 `skillTypes` 数组中添加新的技能类型: ```json { "id": 3, "name": "Attack Speed", "displayName": "攻击速度", "nameTemplate": "Attack Speed +{}%", "type": "attack_speed" } ``` ### 3. 调整技能组数量 修改 `totalGroups` 和相应的 `skillGroups` 数组: ```json { "totalGroups": 15, // 增加到15组 "skillGroups": [ // 添加第13-15组的配置 { "group": 13, "effectPercent": 65, "diamondCost": 130 } ] } ``` ## 测试 使用 `SkillConfigTest` 脚本来验证配置系统是否正常工作: 1. 将 `SkillConfigTest` 组件添加到场景中的节点 2. 运行场景查看控制台输出 3. 检查所有测试是否通过 ## 注意事项 1. **配置加载是异步的**:确保在使用配置数据前调用 `waitForLoad()` 2. **向后兼容性**:如果JSON加载失败,系统会使用默认配置 3. **技能索引**:技能索引(0, 1, 2)对应预制体数组的顺序 4. **组编号**:技能组编号从1开始,不是从0开始 5. **配置验证**:系统会验证配置的完整性,缺失的配置会使用默认值 ## 优势 1. **灵活性**:无需修改代码即可调整技能数值 2. **可维护性**:配置集中管理,易于维护 3. **扩展性**:容易添加新的技能类型和组 4. **测试友好**:可以快速测试不同的数值配置 5. **版本控制**:配置文件可以独立进行版本控制 ## 故障排除 ### 常见问题 1. **配置加载失败** - 检查JSON文件格式是否正确 - 确保文件路径为 `resources/config/skill_config.json` - 查看控制台错误信息 2. **技能显示异常** - 检查 `skillTypes` 配置是否完整 - 确保 `nameTemplate` 包含 `{}` 占位符 - 验证 `skillGroups` 配置是否包含所需的组 3. **钻石消耗不正确** - 检查 `skillGroups` 中的 `diamondCost` 配置 - 确保组编号连续且从1开始 ### 调试技巧 1. 使用 `SkillConfigTest` 脚本进行全面测试 2. 检查控制台日志了解配置加载状态 3. 在浏览器开发者工具中检查JSON文件是否正确加载 4. 使用断点调试配置管理器的方法调用