我想在Lua脚本引擎中注册动态C#变量。
我试过(例:) luaVM["PlayerHealth"] = gameValues.PlayerHealth
。
正如所料,该变量被公认地添加到全局变量表中,但是在Lua脚本运行时期间,它保持其初始值,例如, 100。
因此,我只能在执行脚本之前向引擎传授不同的游戏值。
但我希望引擎在脚本执行期间知道当前gameValues.PlayerHealth
值,因为PlayerHealth
自然会发生变化。
我可以注册一个返回当前值的函数,但看起来有点尴尬:
if (PlayerHealth() == 50) then ... end (looks stupid)
而不是:
if (PlayerHealth == 50) then ... end (looks cool)
我真的不知道要搜索什么,所以非常感谢帮助。随意询问您需要知道的任何事情。
答案 0 :(得分:0)
似乎你可以将lua对象传递给后台线程并从那里刷新变量:
public void RefreshLuaVariables(Lua luaVM)
{
while (true)
{
try
{
luaVM["PlayerX"] = vsc.PlayerX;
...
luaVM["TargetX"] = vsc.TargetX;
...
luaVM["SystemDate"] = DateTime.Now.ToString();
}
catch (Exception e)
{
Print(e.Message);
}
Thread.Sleep(100);
}
}
但这可能导致随机崩溃。