我正在使用LuaInterface在我正在制作的游戏中编写脚本。
脚本编写工作非常好,但不知怎的,我得到了很多随机异常。
我已经将问题缩小到我从C#代码调用lua函数的地方,这些函数是从另一个线程调用的,处理与游戏服务器的网络。
我认为正在发生的是,正在运行lua代码,并且从另一个线程的C#调用lua函数,这会导致随机错误。
我如何从C#调用函数:
function.Call(message);
函数的类型为LuaFunction,message是自定义对象。
我得到的错误:
是否与从创建LuaVM的线程以外的线程运行lua函数有关?
答案 0 :(得分:1)
Lua不是线程安全的。您需要为每个线程设置一个Lua状态并调用特定于线程的状态,或者在任何Lua调用周围放置锁定。
答案 1 :(得分:0)
问题确实存在问题,感谢BMitch指出这一点。
我已经通过让消息线程处理带有参数的函数来修复它,主线程然后在更新方法中调用它们。