LuaInterface在C#中的混淆问题

我以前多次作为最终用户使用过Lua,并且我似乎记得能够在Lua中创建一个方法,然后通过RegisterFunction调用将该方法注册到程序中。

我知道我必须在应用程序中创建RegisterFunction调用才能使该设置起作用,但我的问题是是否必须自己在Lua中实现方法的支持?

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

我正尝试将Lua添加到我的游戏设置中,用于所有实体代码。我已将其设置为允许我在每种实体类型的某些事件中放置脚本,并且我希望将Lua方法附加到这些事件以调用它们。

例如:

OnDamagedEvent += DoLuaMethod(method, Entity ID);

从我对任何编程的理解来看,我不认为可以仅通过“DoString”执行整个方法,除非该字符串一次包含了整个方法,我认为它可以,但这是它应该使用的方式吗? 我计划一次只发送一行到引擎。

如果我在Lua中定义了一个方法,该方法是否将永久(在该实例中)定义为可用?

如果是这样,我如何将该方法的访问器放入C #中并稍后访问它,发送所需的信息来调用参数(我记得有特定的方法类型,您必须从中选择,以便它知道要发送到该方法的信息)

如果我因为不知道应如何设置似乎是一个非常简单的概念而听起来像一个非常新手,我深表歉意,我只是不确定代码应该如何布置以及我应该使用LuaInterface的哪些方法!

提前感谢您的任何帮助 :)

点赞
用户606625
用户606625

好的,我已经找到了所有问题的答案。

LuaInterface 有一个 "LuaFunction" 类,你可以使用它来引用 Lua 中的函数。

一旦脚本运行了,任何已经初始化的函数在脚本运行后仍将保持初始化状态。

您可以使用 Lua.GetFunction(FUNCTION NAME) 来设置 LuaFunction 对象,在 Lua 引用保存函数的实例之后(运行脚本后)。

我在我的 Exposed Methods 添加了一些新方法 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 >

2012-09-02 07:45:24