我之前曾经多次使用Lua作为最终用户,我似乎记得能够在Lua中创建一个方法,然后通过RegisterFunction调用将所述方法注册到程序中。
我知道我必须在我的应用程序内部创建RegisterFunction调用才能使用此设置,但我的问题是我是否必须自己实现对Lua内部方法的支持?
据我所知,目前我唯一的选择是DoString和DoFile,我无法在任何地方找到任何帮助。
我试图将Lua添加到我的游戏设置中以获取所有实体代码,我已将其设置为允许我在每个实体类型的某些事件中放入脚本,并且我想将Lua方法附加到这些事件到打电话给他们。
例如:
OnDamagedEvent += DoLuaMethod(method, Entity ID);
根据我对任何编程工作原理的理解,我不认为可以从" DoString"执行整个方法。除非字符串一次包含整个方法,我想它可以,但它应该如何使用?我曾计划一次只向发动机发送一行。
如果我在Lua中定义一个方法,它将永久(在那个实例中)在lua中定义使用吗?
如果是这样,我怎样才能将这些方法访问器放入C#并稍后访问它,发送所需的信息以调用参数(我记得有一个你必须选择的特定方法TYPES,以便它知道什么信息发送到方法)
如果我听起来像是一个不知道如何设置在概念上看起来如此简单的东西,我道歉,我只是不确定代码应该如何布局以及LuaInterface我应该采用什么方法使用!
提前感谢您的任何帮助:)
答案 0 :(得分:0)
好吧,我找到了所有问题的答案。
LuaInterface有一个“LuaFunction”类,可用于在lua中使用referance函数。
运行脚本后,任何已初始化的函数将在脚本运行后保持初始化状态。
你可以使用Lua.GetFunction(FUNCTION NAME)设置一个LuaFunction对象,其中Lua重新保存你的Lua实例(在运行脚本之后)
我在我的Exposed方法中添加了一些新方法:RegisterEntityEvent和RegisterGlobalEvent以及一些参数,以便让我更具体地说明我想要添加此方法的事件,其设置如下:
public static void RegisterEntityMethod(string MethodName, string EntityType, string EventType)
{
EntityTypes[EntityType].Events[EventType] += CallLuaMethod(LuaEngine.LuaVM.GetFunction(name));
}
/// \ 这是一个未经测试的例子,
要调用它,只需运行LuaFunction.Call(Parameters);
这允许我从我在游戏中的事件处理程序中调用我的Lua脚本中的方法。
这就像我想象的那样简单,只是不容易找到某个地方学习如何去做:D
此处:http://forum.junowebdesign.com/net-programming/30025-luainterface-explained.html>