BallController配置应用修复说明.md 3.3 KB

BallController配置应用修复说明

问题描述

用户报告 BallController.ts 似乎没有应用 ballController.json 中的配置数据。

问题分析

通过代码检查发现以下问题:

  1. BallControllerConfig 接口缺少 maxAttempts 参数定义
  2. BallController.ts 中的默认配置缺少 maxAttempts 参数
  3. positionBallRandomly 方法中硬编码了 maxAttempts = 50,没有使用配置值
  4. 缺少 maxAttempts 的 getter 方法

修复内容

1. 更新配置接口

文件: assets/scripts/Core/ConfigManager.ts

  • BallControllerConfig 接口中添加 maxAttempts: number 参数

2. 更新默认配置

文件: assets/scripts/CombatSystem/BallController.ts

  • 在默认配置对象中添加 maxAttempts: 50 参数

3. 添加配置getter方法

文件: assets/scripts/CombatSystem/BallController.ts

  • 添加 get maxAttempts() 方法,使用 getConfigValue 获取配置值

4. 修复硬编码值

文件: assets/scripts/CombatSystem/BallController.ts

  • positionBallRandomly 方法中的硬编码 maxAttempts = 50 改为 this.maxAttempts

配置参数说明

当前 ballController.json 包含以下19个配置参数:

参数名 类型 当前值 说明
baseSpeed number 30 球的基础移动速度
maxReflectionRandomness number 0.2 反弹随机偏移最大角度
antiTrapTimeWindow number 5 防围困时间窗口
antiTrapHitThreshold number 5 防围困撞击阈值
deflectionAttemptThreshold number 3 偏移尝试阈值
antiTrapDeflectionMultiplier number 3 防围困偏移倍数
FIRE_COOLDOWN number 0.05 子弹发射冷却时间
ballRadius number 25 球的半径
gravityScale number 0 重力缩放
linearDamping number 0 线性阻尼
angularDamping number 0 角阻尼
colliderGroup number 1 碰撞组
colliderTag number 1 碰撞标签
friction number 0 摩擦力
restitution number 1 弹性系数
safeDistance number 20 安全距离
edgeOffset number 20 边缘偏移
sensor boolean false 传感器模式
maxAttempts number 50 最大尝试次数

配置应用机制

  1. 配置加载: loadConfig() 方法在 start() 时调用
  2. 配置应用: applyConfig() 方法将配置值赋给类属性
  3. 配置获取: 通过 getter 方法使用 getConfigValue() 获取配置值
  4. 默认值: 如果配置文件未设置,使用代码中的默认配置

验证结果

配置应用验证通过

  • 配置接口定义完整
  • 配置应用逻辑正确
  • 配置值一致性良好
  • 所有19个参数都能正确从JSON文件加载和应用

使用说明

  1. 确保在Cocos Creator编辑器中将 ballController.json 文件拖拽到 BallController 组件的 ballControllerConfig 属性中
  2. 修改 ballController.json 中的参数值后,重新运行游戏即可生效
  3. 如果配置文件未设置,系统会使用代码中的默认值并在控制台显示警告

注意事项

  • 配置文件必须是有效的JSON格式
  • 所有数值类型参数必须是数字
  • 布尔类型参数必须是 truefalse
  • 修改配置后需要重新启动游戏才能生效