脚本报错时怎么定位到出错那一行
报错是信息,不是灾难
第一次看到满屏红字会慌,其实报错信息是脚本在告诉你「我卡在哪一行、因为什么」。学会读它,调试效率翻十倍。
报错信息的三个要素
典型的 Lua 报错长这样(示例):
main.lua:12: attempt to call a nil value (method 'setContntView')
| 要素 | 这段里的值 | 用途 |
|---|---|---|
| 文件名 | main.lua | 出错的文件 |
| 行号 | 12 | 出错的那一行 |
| 原因 | attempt to call a nil value | 卡住的具体原因 |
拿到行号,回编辑器看左侧行号列——第 12 行是什么一目了然。这段示例里的原因也很有代表性:setContntView 少了个 e,Lua 找不到这个方法,所以报「调用了一个空值」。报错原因里提到的那个名字,八成就是你拼错的名字。
高频报错速查
| 报错关键词 | 通常是 |
|---|---|
| attempt to call a nil value | 函数名拼错,或函数还没定义就调用了 |
| attempt to index a nil value | 对空变量取内容——变量名拼错或忘了赋值 |
| unexpected symbol | 语法错了:少引号、少括号、少 end |
| 'end' expected | 块没闭合,挨个数 if/for/function 的 end |
配合撤销按钮的组合拳
行号对不上、原因看不懂时,用「撤销回退法」:连按撤销回到上一个能跑的版本,运行确认没问题,然后逐步重做,每步一跑——跑挂的那步就是凶手。完整流程在运行与回退里讲过。
还是搞不定的时候
把报错文字里的关键词拿去搜索,Lua 生态大,常见报错都有现成答案;或者去市场找个同类工程对照着看,见用 ALP 工程。修不动也不是绝路,脚本排错里还有一份场景清单。