尝试索引本地“ itemWidget”(nil值)

时间:2018-08-19 19:42:49

标签: lua

有人可以向我解释这个错误吗?我是Lua的新手,我想知道我做错了什么!

这是我的清单。Lua https://pastebin.com/KiUEajMm

我收到此错误:

ERROR: Unable to load module 'game_inventory': LUA ERROR:
/game_inventory/inventory.lua:117: attempt to index local 'itemWidget' (a nil value)
stack traceback:
    [C]: in function '__index'
    /game_inventory/inventory.lua:117: in function 'onInventoryChange'
    /game_inventory/inventory.lua:77: in function 'refresh'
    /game_inventory/inventory.lua:47: in function 'init'
    /game_inventory/inventory.otmod:8:[@onLoad]:1: in main chunk
    [C]: in function 'reloadModules'
    /client_modulemanager/modulemanager.lua:149: in function 'reloadAllModules'
    /client_modulemanager/modulemanager.otui:75: [@onClick]:2: in function </client_modulemanager/modulemanager.otui:75: [@onClick]:1>

1 个答案:

答案 0 :(得分:0)

该错误表示您尝试访问itemWidget的方法nil。因此,如果存在itemWidget可能是nil的可能性,则必须进行以下检查:

if itemWidget == nil then
    itemWidget:setStyle(InventorySlotStyles[slot])
    ...
end

使用您发布的代码,我只能猜测为什么itemWidgetnil

  1. inventoryPanel:getChildById('slot' .. slot)返回nil
  2. 是有效的
  3. 某处的错字(例如:'slot' .. slot而不是'slot ' .. slot->缺少空格)
  4. 错误的顺序:inventoryPanel:getChildById('slot' .. slot)仅在初始化功能结束或类似的操作之后起作用