[C]: in function 'getChildByName'
[string "scripts/GUI/GUI.lua"]:1934: in function 'Image_Create'
[string "GUILayout/NPC/leishen.lua"]:19: in function 'showEffect'
[string "GUILayout/NPC/leishen.lua"]:278: in function 'callback'
[string "scripts/
这个错误是因为你在创建图片时使用了错误的参数顺序。`GUI:Image_Create`函数需要父节点作为第一个参数,但你传入了`sceneLayer`,而`sceneLayer`可能不是一个有效的父节点对象。
根据浮生梦老师前端课程内容,`GUI:Attach_LeftTop()`返回的是一个挂接点,可能不是创建子控件的合适父节点。你应该先创建一个容器节点:
```lua
local function showEffect(msgID, p1, p2, p3, msgData)
local data = SL:JsonDecode(msgData, false) or {}
SL:Print("特效数据", data)
local num = data.num or 0
local eff1, eff2 = data.preEff, data.startEff
-- 创建父节点作为容器
local sceneLayer = GUI:Win_Create("EffectContainer", 0, 0, 0, 0, false, false, true, false, false, false, 1)
if GUI:Win_IsNull(sceneLayer) then
SL:Print("创建容器失败")
return
end
-- 主倒计时进度条
local mainImage = GUI:Image_Create(sceneLayer, "Main_Image", 700, 500, "res/erdalu/leishen/jdt/leishen.png")
if GUI:Win_IsNotNull(mainImage) then
GUI:setVisible(mainImage, true)
else
SL:Print("创建主图片失败")
end
-- ... 其他代码保持不变 ...
```
主要问题是第19行的`GUI:Image_Create(sceneLayer, ...)`,`sceneLayer`应该是一个有效的父节点对象。使用`GUI:Win_Create`创建一个窗口作为容器,然后在这个窗口上创建子控件。
另外,检查一下你的图片路径是否正确,确保`"res/erdalu/leishen/jdt/leishen.png"`这个图片文件存在。如果图片不存在,也会导致创建失败。
建议你先创建一个简单的测试界面,确认图片创建功能正常,再逐步添加其他功能。