常见报错翻译和排查技巧
报错信息 | 解析 |
---|---|
attempt to index a nil value | 试图访问一个空值的属性或方法,一般来说是语句中的某个参数是空值,可以考虑用『输出调试日志』的方法来看看到底哪个值是nil |
cannot wrap coroutine by main thread!!! | 主线程中不能包裹协程,一般出现在公式里使用等待或计时器调用云变量语句中,可以参考TapTap案例:如何解决协程冲突的问题 |
badloop! free game session soon more than 200,000,000 lua instructions in one tick, maybe bad loop C stack overflow | 逻辑中存在死循环或无限递归,如果该报错发生在服务端,会导致游戏局立刻结束 出现该问题的典型情况: 1.A函数调用B函数,B函数调用A函数 2.while语句条件有误,导致循环体持续执行 |
number expected, got number | 函数中传入的参数为inf(任意数值除以0)或NaN(0除以0) |
common/base/lualib_bundle.lua:808: attempt to index a nil value (local 'target') | 触发器内尝试引用类或事件失败 需要在触发编辑器内将所有的类和事件定义放在触发器的上方 |
报错信息:projectName(项目名)/trigger_module_main.lua:XXX | 这里的XXX代表的是报错信息所在的lua文件的行数,也可以从这里去排查报错的原因 |
报错信息:projectName(项目名)/trigger_validator.lua: XXX | 这里的XXX代表的是报错信息所在的lua文件的行数,去trigger_validator.lua文件找到报错行数中报错的公式id,![]() ![]() ![]() ![]() |
触发器的服务端代码生成路径 | script/trigger_module_main_X.lua(X为任意数字),最好用vscode或者其他代码开发工具打开 |
触发器的客户端代码生成路径 | ui/script/trigger_module_main_X.lua(X为任意数字),最好用vscode或者其他代码开发工具打开 |
1.客户端/服务端遇到报错信息如何定位(找lua再找对应的触发)
提示:一般服务端的代码存储在项目根目录的script文件夹中,而客户端代码存储在项目根目录下ui/script文件夹 中