在Lua中注册动态的C#变量

我想在 Lua 脚本引擎中注册动态 C# 变量。

我尝试了(例如:)luaVM["PlayerHealth"] = gameValues.PlayerHealth。 正如预期的那样,变量确实添加到全局变量表中,但在 Lua 脚本运行时,它保持其初始值,例如 100。 因此,我只能在执行脚本之前将不同的游戏值教给引擎。

但我希望引擎在脚本执行期间知道当前的 gameValues.PlayerHealth 值,因为 PlayerHealth 自然会发生变化。

我可以注册一个返回当前值的函数,但它看起来有点笨拙:

if (PlayerHealth() == 50) then ... end(看起来很愚蠢)

而不是:

if (PlayerHealth == 50) then ... end(看起来很酷)

我不知道要搜索什么,所以非常感谢帮助。 随时问出您需要了解的任何问题。

点赞
用户4793358
用户4793358

似乎你可以将 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);
        }
    }

但是这可能会导致随机崩溃。

2015-04-15 20:42:51