Shield 中文文档 下载 App

脚本报错时怎么定位到出错那一行

报错是信息,不是灾难

第一次看到满屏红字会慌,其实报错信息是脚本在告诉你「我卡在哪一行、因为什么」。学会读它,调试效率翻十倍。

报错信息的三个要素

典型的 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 工程。修不动也不是绝路,脚本排错里还有一份场景清单。