通过LuaInterface从C#访问Lua函数

我在LuaInterface使用C#调用Lua函数时遇到了问题。

如果我定义一个如下的LuaFunction:

function object:OnEvent()
  -- Do something
end

那么我可以使用正常的调用在C#中调用它,比如:

(object["OnEvent"] as LuaFunction).Call();

不需要传入任何参数。但是如果你看一下Lua中的函数定义,我使用了“:”来定义该函数。我可以像下面这样改写它,这是相同的:

function object.OnEvent(self)
  -- Do something
end

到目前为止,一切都还好。但是现在,我要用另一个函数替换OnEvent。

function Replacement(self)
  -- Do something other
end

object.OnEvent = Replacement

现在我遇到了一个问题。在这种情况下,我必须带一个参数(self)来调用该函数。如果我没有这样做,我会遇到一个错误。

我可以通过两种方式解决这个问题:

  1. 告诉LuaInterface每次应该带有一个self参数去调用使用“:”定义的方法。
  2. 从LuaInterface中获取该函数所需的参数数量。

但是,如何做到这些呢?

谢谢。

点赞