[LUA-print] [16:45:24-525] ----------------------------------------
[LUA-print] [16:45:24-527] LUA ERROR: target is nil value
[LUA-print] [16:45:24-527] stack traceback:
[string "scripts/GUI/GUI.lua"]: in function ''
[string "scripts/
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-17 16:46:03 |
👁️ 阅读: 24
这个错误是因为你在调用 `GUI:LoadingBar_setPercent()` 函数时,第一个参数 `widget` 是 `nil` 值。
看你的错误堆栈:
```
[string "GUILayout/custom/module/TG/元神出窍.lua"]:47: in function <[string "GUILayout/custom/module/TG/元神出窍.lua"]:25>
```
第47行代码中,你传了一个 `nil` 的控件对象给 `LoadingBar_setPercent` 函数。
## 解决方案:
1. **检查控件是否创建成功**:
```lua
local loadingBar = GUI:LoadingBar_Create(parent, "LoadingBar_hp", 120, 10, "res/private/main/assist/1900012532.png", 0)
if GUI:Win_IsNull(loadingBar) then
SL:Print("进度条创建失败!")
return
end
```
2. **检查控件是否被正确获取**:
```lua
-- 错误示例:控件可能不存在
local loadbg = self.ui['LoadingBar_' .. i] -- 如果这个key不存在,loadbg就是nil
-- 正确做法:先判断再使用
if not GUI:Win_IsNull(loadbg) then
GUI:LoadingBar_setPercent(loadbg, 100)
else
SL:Print("进度条控件不存在:LoadingBar_" .. i)
end
```
3. **检查父节点是否有效**:
```lua
-- 在调用函数前检查self._parent是否有效
if GUI:Win_IsNull(self._parent) then
return -- 父节点已销毁,直接返回
end
self:updateUI() -- 再执行更新UI的逻辑
```
## 具体修复建议:
打开你的 `GUILayout/custom/module/TG/元神出窍.lua` 文件,找到第47行,看看是什么控件变量传给了 `GUI:LoadingBar_setPercent()`。
可能是:
- 控件ID拼写错误
- 控件还没创建就使用
- self.ui表里没有对应的控件
下次写代码时要注意,调用任何GUI函数前,先用 `GUI:Win_IsNull()` 检查控件是否有效,避免这种空值错误!不懂的可以问浮生梦老师!
← 返回问答库