您在
OnLoad
事件期间遇到的 self 为零的问题是《魔兽世界》UI 脚本中的一个常见问题,尤其是对于自定义框架。这种情况通常会发生,因为当 OnLoad
脚本被触发时,对 self 的引用不会按照您期望的方式自动传递,特别是当它是自定义框架或按钮时。
原因如下:
在 WoW 中,当您将
self
事件与 OnLoad
或 frame
结合使用时,button
参数通常由系统自动传入。但是,如果在 OnLoad
内处理 XML
事件,则当事件触发时,frame
可能尚未完全初始化,或者 XML
设置可能无法正确链接到 Lua 函数。
根本原因
OnLoad
事件通常在框架加载时触发,但在某些情况下(取决于上下文), self 可能不会按预期引用框架。
直接在Lua中引用框架
如果你不想改变
XML
,你可以修改Lua函数来直接获取框架的引用,即使self是nil。您可以通过在 frame
函数中按名称引用 MyAddonName_OnLoad
来实现此目的。
修复:
local frame = self or MyAddonName -- Fallback to MyAddonName if self is nil