LUA - OnUpdate shift modifier LUA - OnUpdate 转移修饰符

我正在修改一个用Lua编写的《魔兽世界》插件。有一个简单的布尔变量,决定是否显示所有框架或仅显示特定框架。当 when = true 时,它将仅显示特定框架。当 when = false 时,它将显示所有框架。我想使用Shift键创建一个修改器,按下Shift键时显示所有框架,并在释放Shift键时再次隐藏它们。

if IsShiftKeyDown() then
    cfg.aura.onlyShowPlayer = false
else
    cfg.aura.onlyShowPlayer = true
end

这是我的非常简单的解决方案,它可以正常工作。然而问题在于,它仅在脚本启动时工作。你知道,在《魔兽世界》中,每次加载界面时,如果未明确指定,它都会运行脚本。这不是很有效率,因为我会让用户进入一个加载屏幕。 OnUpdate 应该可以解决我的问题,它会在每次渲染帧时运行特定的代码,这非常方便,也是我想要实现的。

所以这就是我做的

local function onUpdate(self,elapsed)
   if IsShiftKeyDown() then
     cfg.aura.onlyShowPlayer = false
   else
     cfg.aura.onlyShowPlayer = true
   end
end

local shiftdebuffs = CreateFrame("frame")
shiftdebuffs:SetScript("OnUpdate", onUpdate)

我的问题是它无法正常工作。我对 OnUpdate 的使用仅仅是从另一个插件中复制粘贴的,而那个插件运行得很好。当前它只能走到false,我认为这是因为它是默认值。

感谢帮助。

点赞
用户1442917
用户1442917

不,if语句中没有"默认"分支。为了控制权移到then分支,条件必须评估为true。你需要检查逻辑,但如果脚本执行cfg.aura.onlyShowPlayer = false,那么它意味着IsShiftKeyDown()被评估为true

2014-10-03 22:48:54