尝试对本地变量'itemWidget'进行索引(空值)

有人能解释一下这个错误吗?我是Lua的新手,我想学习我错在哪里!

这是我的Inventory.Lua https://pastebin.com/KiUEajMm

我得到了这个错误:

错误:无法加载模块'game_inventory':LUA错误:
/game_inventory/inventory.lua:117:尝试对本地变量'itemWidget'进行索引(空值)
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> 
点赞
用户8572843
用户8572843

错误意味着当 itemWidgetnil 时,您尝试访问 itemWidget 的方法。因此,如果存在 itemWidget 可能为 nil 的可能性,则必须检查此问题:

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

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

  1. inventoryPanel:getChildById('slot' .. slot) 返回值可能为 nil
  2. 有拼写错误(例如:'slot' .. slot 而非 'slot ' .. slot,缺少空格)
  3. 顺序错误:在初始化函数结束后或类似的情况下,inventoryPanel:getChildById('slot' .. slot) 才有效。
2018-08-20 07:03:29