在Lua中注册动态C#变量

时间:2015-04-15 18:43:58

标签: c# variables dynamic lua

我想在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)

我真的不知道要搜索什么,所以非常感谢帮助。随意询问您需要知道的任何事情。

1 个答案:

答案 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);             
        }
    }

但这可能导致随机崩溃。