attempt to call a nil value (method 'AddChild') 报错 function npcui.cc:Create()
npcui.ui = FGUI:ui_delegate(self.component)
local newImage = FGUI:CreateObject(npcui.ui.n0, "acb", "anj", false)
end 我想创建一个图片 创建不出来呢
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-03-20 17:22:02 |
👁️ 阅读: 10
创建图片组件时,`CreateObject`的第一个参数需要是有效的父组件对象,而不是字符串。根据你的代码,`npcui.ui`是UI代理对象,但`npcui.ui.n0`可能不是有效的组件引用。
正确的做法是使用`FGUI:GetChild`先获取父组件,或者确保`npcui.ui.n0`是有效的组件对象。例如:
```lua
function npcui.cc:Create()
npcui.ui = FGUI:ui_delegate(self.component)
local parent = FGUI:GetChild(npcui.ui, "n0") -- 先获取父组件
if parent then
local newImage = FGUI:CreateObject(parent, "acb", "anj", false)
-- 设置纹理
FGUI:GImage_setTexture(newImage, "ui://acb/anj", true)
end
end
```
另外,纹理路径`"ui://acb/anj"`需要确认包名`acb`和图片名`anj`是否正确。如果图片创建后需要设置纹理,可以参考以下方式:
```lua
local background = FGUI:GetChild(ui, "背景组件名")
local newImage = FGUI:CreateObject(background, "CommonPackage", "CommonImage", false)
FGUI:GImage_setTexture(newImage, "ui://CommonPackage/图片名", true)
```
如果`n0`不是有效的组件名,请检查UI编辑器中该组件的实际名称。
创建图片组件时,`CreateObject`的第一个参数需要是有效的父组件对象,而不是字符串。根据你的代码,`npcui.ui`是UI代理对象,但`npcui.ui.n0`可能不是有效的组件引用。
正确的做法是使用`FGUI:GetChild`先获取父组件,或者确保`npcui.ui.n0`是有效的组件对象。例如:
```lua
function npcui.cc:Create()
npcui.ui = FGUI:ui_delegate(self.component)
local parent = FGUI:GetChild(npcui.ui, "n0") -- 先获取父组件
if parent then
local newImage = FGUI:CreateObject(parent, "acb", "anj", false)
-- 设置纹理
FGUI:GImage_setTexture(newImage, "ui://acb/anj", true)
end
end
```
另外,纹理路径`"ui://acb/anj"`需要确认包名`acb`和图片名`anj`是否正确。如果图片创建后需要设置纹理,可以参考以下方式:
```lua
local background = FGUI:GetChild(ui, "背景组件名")
local newImage = FGUI:CreateObject(background, "CommonPackage", "CommonImage", false)
FGUI:GImage_setTexture(newImage, "ui://CommonPackage/图片名", true)
```
如果`n0`不是有效的组件名,请检查UI编辑器中该组件的实际名称。
← 返回问答库