0

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

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

据我所知,此时我唯一的选择是 DoString 和 DoFile,我在任何地方都找不到任何帮助。

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

例如:

OnDamagedEvent += DoLuaMethod(method, Entity ID);

根据我对任何编程如何工作的理解,我认为不可能仅从“DoString”执行整个方法,除非字符串一次包含整个方法,我想它可以,但它应该如何使用?我原本计划一次只向引擎发送一条线。

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

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

如果我听起来像个菜鸟,我很抱歉,因为我不知道如何设置一些在概念上看起来如此简单的东西,我只是不确定代码应该如何布局以及我应该使用 LuaInterface 中的哪些方法!

在此先感谢您的帮助:)

4

1 回答 1

0

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

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

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

您可以使用 Lua.GetFunction(FUNCTION NAME) 设置 LuaFunction 对象,其中 Lua 引用包含该函数的 Lua 实例(运行脚本后)

我在我的公开方法中添加了一些新方法:RegisterEntityEvent 和 RegisterGlobalEvent 以及一些参数,以允许我更具体地了解我想将此方法添加到哪个事件,其设置如下:

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 >

于 2012-09-02T07:45:24.430 回答