创游世界脚本调试指南
一句话摘要
创游世界脚本调试的完整指南,涵盖常用调试工具、调试技巧、常见问题排查方法,帮助快速定位和解决脚本问题。
适合谁阅读
- 遇到「脚本不执行」「广播没效果」问题的开发者
- 想学习脚本调试技巧的初学者
- 需要系统性调试方法的进阶用户
你将学到什么
- 常用调试工具及其使用方法
- 脚本调试的基本技巧
- 常见问题的排查流程
- 广播、变量、循环问题的定位方法
- 联机调试的特殊技巧
常用调试工具
查看数值
作用:查看变量、属性的当前值。
使用方法:
- 在试玩模式下打开调试面板
- 选择要查看的对象
- 查看其变量和属性值
适用场景:
- 检查变量是否正确初始化
- 检查属性值是否按预期变化
- 检查数组元素是否正确
逐行 Debug
作用:单步执行脚本,逐行查看执行过程。
使用方法:
- 在脚本编辑器中设置断点
- 开始试玩
- 脚本执行到断点时暂停
- 单步执行,查看每一步的变量变化
适用场景:
- 复杂逻辑的执行路径不确定
- 条件判断结果不符合预期
- 循环执行次数异常
调用栈
作用:查看脚本执行路径和调用顺序。
使用方法:
- 在 Debug 模式下查看调用栈面板
- 查看当前执行到了哪个脚本
- 追踪调用来源
适用场景:
- 追踪广播触发来源
- 了解脚本执行顺序
- 定位多层调用中的问题
查看碰撞盒
作用:查看物体的碰撞检测范围。
使用方法:
- 试玩时打开调试层
- 查看物体周围的碰撞框
- 检查碰撞层级是否正确
适用场景:
- 角色走不动(可能是碰撞盒太大)
- 碰撞检测不生效(可能是碰撞框位置不对)
- 物体之间穿透(可能是碰撞层级不匹配)
调试技巧
技巧1:使用显示提示
最简单的调试方法是用「显示」或「打印」输出变量值。
当点击时
新建局部变量 测试值 = 100
显示 "测试值:" + 测试值 // 输出到屏幕
发送广播 "测试广播"
结束
当收到广播 "测试广播" 时
显示 "广播收到" // 确认广播被执行
结束优点:简单直接,不需要额外工具 缺点:影响游戏体验,正式发布前要删除
技巧2:使用广播日志
用专门的调试广播输出日志,方便追踪。
当点击按钮时
发送广播 "调试_打印" 并携带文本 "按钮被点击"
// ... 正常逻辑
结束
当收到广播 "调试_打印" 时
打印日志 参数.信息
结束优点:不显示在游戏界面上,不影响体验 缺点:需要额外的日志查看面板
技巧3:分步测试
先把脚本拆成多个小段,逐段测试。
// 第一步:测试发送端
当点击时
发送广播 "测试_A"
显示 "已发送广播A"
结束
// 第二步:确认收到后,添加处理逻辑
当收到广播 "测试_A" 时
显示 "收到广播A,开始处理"
// 添加处理逻辑
显示 "处理完成"
end技巧4:使用临时广播名
测试时使用带编号的广播名,方便追踪。
// 测试时
当点击时
发送广播 "test_001"
结束
// 测试完成后改成语义化名称
当点击时
发送广播 "玩家_点击按钮"
end技巧5:条件隔离
用临时条件限制触发范围,避免误触发。
当收到广播 "刷新UI" 时
// 添加临时调试条件
如果 获取系统属性 "调试模式" = 真
显示 "收到刷新UI广播"
结束
// 正常逻辑
结束常见问题排查
问题1:脚本不执行
排查步骤:
- 是否有触发时机?
- 触发时机是否写对?
- 物体是否有对应组件?
- 是否保存了脚本?
- 是否在试玩模式下?
检查清单:
- [ ] 有触发时机(没有则不会执行)
- [ ] 触发时机正确(如「当点击时」需要可互动组件)
- [ ] 物体有对应组件
- [ ] 脚本已保存
- [ ] 在试玩模式而非编辑模式
问题2:广播没效果
排查步骤:
- 广播名称是否完全一致?
- 接收脚本是否在「当收到广播时」下?
- 接收者是否在当前地图?
- 广播时机是否在监听者初始化之后?
检查清单:
- [ ] 发送和接收的广播名完全一致
- [ ] 大小写、空格是否一致
- [ ] 接收脚本有「当收到广播时」触发时机
- [ ] 接收者在当前地图
- [ ] 监听者初始化后再发送广播
问题3:变量值不对
排查步骤:
- 变量是否正确初始化?
- 变量作用域是否正确?
- 变量类型是否匹配?
- 是否有其他地方修改了变量?
检查清单:
- [ ] 变量在使用前已初始化
- [ ] 变量作用域正确(局部变量/属性/变量表)
- [ ] 变量类型正确(数字vs文本)
- [ ] 没有其他地方意外修改
问题4:循环导致卡死
排查步骤:
- 无限循环内是否有等待?
- 循环退出条件是否满足?
- 是否有多层嵌套循环?
检查清单:
- [ ] 无限循环内有「等待」积木
- [ ] 循环退出条件正确
- [ ] 避免过多层嵌套
问题5:碰撞检测不生效
排查步骤:
- 两个物体是否都有物理组件?
- 物理组件的碰撞层级是否匹配?
- 至少有一个物体不是「固定」的?
- 碰撞检测是否开启?
检查清单:
- [ ] 两个物体都有物理组件
- [ ] 碰撞层级匹配
- [ ] 至少有一个物体可移动
- [ ] 物理组件碰撞检测已开启
问题6:UI状态错乱
排查步骤:
- 真值是否放在正确位置?
- UI是否只负责显示?
- 切地图后数据是否丢失?
检查清单:
- [ ] 真值放在地图层或系统层
- [ ] UI只负责显示和接收输入
- [ ] 跨地图数据用玩家变量
联机调试技巧
联机时的特殊问题
联机模式下脚本执行逻辑与单机不同:
| 问题 | 原因 | 解决方法 |
|---|---|---|
| UI 很卡 | 旧版本 UI 同步问题 | 更新到 4.52.54+ |
| 数据不同步 | 只修改了本地数据 | 使用正确的同步变量 |
| 广播不生效 | 广播没有下沉 | 使用「地图广播下沉」 |
联机调试建议
- 先在单机模式下调通:基本逻辑在单机下调通,再测试联机
- 注意同步变量:需要同步的数据要用同步变量
- 使用地图广播下沉:需要地图处理的广播使用下沉功能
- 控制调试输出:联机时每个玩家的调试输出都会执行,避免过多日志
调试工具速查
| 工具 | 作用 | 适用场景 |
|---|---|---|
| 查看数值 | 查看变量当前值 | 变量值不对 |
| 逐行 Debug | 单步执行脚本 | 复杂逻辑执行路径 |
| 调用栈 | 查看调用顺序 | 追踪调用来源 |
| 查看碰撞盒 | 查看碰撞范围 | 碰撞检测不生效 |
| 显示提示 | 输出变量值 | 快速测试 |
| 广播日志 | 记录执行日志 | 不影响游戏体验 |
调试流程速查
发现问题
↓
确认问题类型(脚本不执行/广播没效果/变量值不对)
↓
使用对应排查步骤
↓
定位问题原因
↓
修复问题
↓
测试验证
↓
继续下一个问题相关页面
待验证问题
[待验证]某些调试工具的具体快捷键[待验证]联机模式下调试工具的行为差异
后续优化方向
- 补充更多实际调试案例
- 增加视频演示
- 完善联机调试专题
