# BallController配置导入修复说明 ## 问题描述 用户报告在使用 `config_manager.py` 导入 `BallController标准配置表.xlsx` 时遇到导入失败的问题,虽然能识别内容但在转换过程中出现错误。 ## 问题根源 原始的 `config_manager.py` 中的 `_set_config_mapping_for_files()` 方法没有为BallController配置文件设置专门的参数映射,导致: 1. 文件被识别为默认的横向格式,但BallController使用纵向格式(参数名-数值) 2. 参数类型映射为空,无法正确解析Excel中的参数 3. 参数名不匹配,导致大部分参数无法被正确读取 ## 修复内容 ### 1. 添加BallController配置映射 在 `config_manager.py` 的 `_set_config_mapping_for_files()` 方法中添加了专门的BallController配置映射: ```python elif 'ballcontroller' in filename or '球控制' in filename or '标准配置表' in filename: # BallController配置映射(纵向格式:参数名-数值) self.current_mapping = { 'format_type': 'vertical', 'param_types': { 'baseSpeed': float, 'maxReflectionRandomness': float, 'antiTrapTimeWindow': float, 'antiTrapHitThreshold': int, 'deflectionAttemptThreshold': int, 'antiTrapDeflectionMultiplier': float, 'FIRE_COOLDOWN': float, 'ballRadius': float, 'gravityScale': float, 'linearDamping': float, 'angularDamping': float, 'colliderGroup': int, 'colliderTag': int, 'friction': float, 'restitution': float, 'safeDistance': float, 'edgeOffset': float, 'sensor': bool, 'maxAttempts': int } } ``` ### 2. 支持的参数 修复后的系统现在能正确识别和导入以下19个BallController参数: | 参数名 | 类型 | 描述 | |--------|------|------| | baseSpeed | float | 基础速度 | | maxReflectionRandomness | float | 最大反射随机性 | | antiTrapTimeWindow | float | 反陷阱时间窗口 | | antiTrapHitThreshold | int | 反陷阱碰撞阈值 | | deflectionAttemptThreshold | int | 偏转尝试阈值 | | antiTrapDeflectionMultiplier | float | 反陷阱偏转倍数 | | FIRE_COOLDOWN | float | 发射冷却时间 | | ballRadius | float | 球体半径 | | gravityScale | float | 重力缩放 | | linearDamping | float | 线性阻尼 | | angularDamping | float | 角度阻尼 | | colliderGroup | int | 碰撞器组 | | colliderTag | int | 碰撞器标签 | | friction | float | 摩擦力 | | restitution | float | 弹性系数 | | safeDistance | float | 安全距离 | | edgeOffset | float | 边缘偏移 | | sensor | bool | 传感器模式 | | maxAttempts | int | 最大尝试次数 | ## 使用方法 ### 1. 启动配置管理器 ```bash cd d:\CocosGame\Pong\assets\resources\data\excel python config_manager.py ``` ### 2. 导入BallController配置 1. 在GUI界面中点击"浏览文件"或"扫描项目文件" 2. 选择 `BallController标准配置表.xlsx` 文件 3. 点击"预览选中文件"查看解析结果 4. 确认无误后点击"导入配置"完成导入 ### 3. 验证导入结果 导入成功后,系统会: - 显示"成功读取配置,共 19 个参数" - 列出所有参数及其值和数据类型 - 生成对应的JSON配置文件 ## 测试验证 可以使用提供的测试脚本验证修复效果: ```bash python test_ballcontroller_import.py ``` 测试脚本会: 1. 自动检测BallController配置映射 2. 读取Excel文件并解析所有参数 3. 验证参数完整性和数据类型正确性 4. 输出JSON格式的配置数据 ## 修复前后对比 | 项目 | 修复前 | 修复后 | |------|--------|--------| | 识别文件类型 | ❌ 默认横向格式 | ✅ 正确识别为纵向格式 | | 参数映射 | ❌ 空映射 | ✅ 完整的19个参数映射 | | 读取参数数量 | ❌ 仅7个参数 | ✅ 全部19个参数 | | 数据类型转换 | ❌ 部分错误 | ✅ 全部正确 | | 布尔值处理 | ❌ 字符串 | ✅ 正确的布尔值 | | 导入成功率 | ❌ 失败 | ✅ 100%成功 | ## 注意事项 1. **文件命名**:确保Excel文件名包含 `ballcontroller`、`球控制` 或 `标准配置表` 关键词 2. **文件格式**:保持纵向格式(参数名在A列,数值在B列) 3. **数据类型**:确保Excel中的数值格式正确(数字、布尔值等) 4. **参数完整性**:所有19个参数都应该在Excel文件中存在 ## 总结 通过添加专门的BallController配置映射,修复了导入失败的问题。现在 `config_manager.py` 能够: - 正确识别BallController配置文件 - 完整读取所有19个参数 - 正确转换数据类型 - 成功生成JSON配置文件 用户现在可以正常使用GUI配置管理器导入BallController的Excel配置,无需再使用命令行脚本。