2012-09-02 62 views
0

我曾经多次使用Lua作为最终用户,我似乎记得能够在Lua中创建一个方法,然后通过RegisterFunction调用将该方法注册到程序中。Lua在C#混淆界面

我知道我将不得不在我的应用程序内部创建RegisterFunction调用以使此设置生效,但是我的问题是我是否必须自己实现对Lua内部方法的支持?

据我所知目前唯一的选择是DoString和DoFile,我无法在任何地方找到任何帮助。

我试图添加Lua到我的游戏设置所有的实体代码,我有它的设置允许我在每个实体类型的某些事件中放入脚本,并且我想将Lua方法附加到这些事件给他们打电话。

例如:

OnDamagedEvent += DoLuaMethod(method, Entity ID); 

从我的任何程序是如何工作的,我不会认为这将有可能从只是“DoString”执行整个方法,除非该字符串包含整个方法一次认识,我想它可以,但是它应该如何使用?我曾计划过每次发送一行到引擎。

如果我在Lua中定义一个方法,它会在lua中定义的永久(在这种情况下)被使用吗?

如果是这样,我怎样才能将访问器访问到C#中,然后访问它,发送所需的信息来调用参数(我记得具有特定方法的类型,您必须从中选择,以便它知道什么信息发送到该方法)

我道歉,如果我听起来像一个总noob不知道如何设置的东西,似乎这么简单的概念,我只是不知道如何奠定了代码和什么方法从LuaInterface我应该使用!

预先感谢任何帮助:)

回答

0

好吧,我发现所有的答案我的问题。

LuaInterface有一个“LuaFunction”类,您可以用它来保护lua中的函数。

脚本运行后,任何已经初始化的函数都将在脚本运行后保持初始化。

您可以通过使用Lua.GetFunction(函数名),其中的Lua referances你的Lua的实例保存功能(在运行该脚本后)设置LuaFunction对象

我说在我公开的方法了一些新的方法:RegisterEntityEvent和RegisterGlobalEvent与几个PARAMATERS让我更加具体,以我想添加这个方法,它的设置是这样哪个事件:

public static void RegisterEntityMethod(string MethodName, string EntityType, string EventType) 
{ 
    EntityTypes[EntityType].Events[EventType] += CallLuaMethod(LuaEngine.LuaVM.GetFunction(name)); 
} 

/// \ 那是一个例子OFC,未经测试

要调用它,只需运行LuaFunction.Call(Parameters);

这使我可以从我的游戏中的事件处理程序中调用我的Lua脚本中的方法。

这是因为我认为这是那么容易,只是不容易找到的地方,以了解如何做到这一点:d

这里:http://forum.junowebdesign.com/net-programming/30025- luainterface-explained.html>