怎么解决重复导入 lua

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么解决重复导入 lua相关的知识,希望对你有一定的参考价值。

参考技术A 使用require替换loadstring和loadfile require的时候会对package.loaded这个table进行维护 在require的过程中 值会为true require结束后 会为一个table 即你要加载的整个env 所以多次require 不会重复导入lua

Lua脚本在关键事件上重复不停止

【中文标题】Lua脚本在关键事件上重复不停止【英文标题】:Lua script repeat on key event not stopping 【发布时间】:2021-12-09 01:20:39 【问题描述】:

简单的问题,我却不容易解决:

我有一个循环和随 OnEvent(event, arg) 函数变化的变量

但是在循环中它不会检测到例如变化

local cancel_action = false

function OnEvent(event, arg)
  if (event == "MOUSE_BUTTON_PRESSED" and arg == 2) then
    cancel_action = not cancel_action
    OutputLogMessage("DETECT  cancel_action :")
    OutputLogMessage(tostring(cancel_action))
  end

  if (event == "MOUSE_BUTTON_PRESSED" and arg == 3) then
    test()
  end
end

function test()
  count_ = 0
  repeat
     count_ = count_ + 1
     OutputLogMessage("cancel_action ?")
     OutputLogMessage(tostring(cancel_action))
     if ( cancel_action ) then
       OutputLogMessage("do something and stop")
       cancel_action = not cancel_action
       break
     else
        OutputLogMessage("do something else and loop again")
     end
  until count_ > 10
end

这里 cancel_action 检测到更改并在 OnEvent 函数中正常工作,但在测试函数的循环中从未检测到。

所以总结一下我想要的是使用保存状态但这些状态在我的测试函数中没有正确更新的变量。

我做错了什么?在循环中是否可以检测到变量的变化?该事件似乎只有在循环完成后才会触发

【问题讨论】:

这能回答你的问题吗? LUA scripting switching on/off a script 【参考方案1】:

您不会在循环中更新cancel_action,并且当您的代码忙于运行循环时,不会处理更多事件。那么cancel_action应该如何改变它的值呢?

使用IsMouseButtonPressed(2) 终止循环。

【讨论】:

以上是关于怎么解决重复导入 lua的主要内容,如果未能解决你的问题,请参考以下文章

lua语言删除重复数据,怎么删不了?

用lua生成一组10 个 1~100 之间不重复随机数。

在导入Oracle数据库的时候违反唯一约束条件是为啥?要怎么解决?

Lua for循环减少我?奇怪的行为[重复]

关于sqlite数据库导入了一半时,遇到重复id停止了。所以操作回滚,但剩下db-journal文件。怎么解决冲突哇

导入数据库出现#1062 - Duplicate entry '1' for key 1 怎么解决啊!