0

我正在开发一个控制游戏角色的程序。我希望我的用户能够在我的游戏程序中编写 Lua 脚本。

我的程序中有一个int变量 ,int SelfManaPc以这种方式传递给脚本编写器:lua_compiler["SelfManaPc"] = SelfManaPc;.

这个变量在我的主程序中的不同线程中被快速更改。我的问题是,它只将值传递给 Lua 脚本,而不是指针。在 C# 程序中更改值后,在 Lua 脚本中它不再更改。

我已经制定了我的解决方案,它工作得很好(SelfManaPc现在是我自己的类的对象,Integer所以我可以传递指针而不是值)。

C#类:

  public class Integer
    {
        int value;
        public Integer(int xd) { value = xd; }

        public void Set(int xd) {value = xd;}
        public int Get() { return value; }        
    }

Lua代码中的使用示例:

while true do
    Say(SelfManaPc:Get())
    Sleep(2000);
end

如果没有别的办法,我就这样放着。但是,我想先向你们中的任何人询问其他想法。访问它有点愚蠢intGet所以Set你们中的一些人可能知道一些不错的技巧。

4

1 回答 1

1

如果您的脚本中有多个这样的变量,您可以考虑将它们放在一个全局表中,例如命名options。然后向该表添加一个表:__index元方法返回给定名称的变量的值,元方法为给定名称的变量__newindex设置一个新值。

如何实现这取决于您用于 C# 的绑定库。

Lua代码中的使用示例:

while true do
    Say(options.SelfManaPc)
    Sleep(2000)
    options.SelfManaPc = 1000 -- sets new value
    Sleep(500)
end
于 2012-12-27T14:01:02.407 回答