目前,我正在一些前端工作中使用NLua在一些C#代码中。我在NLua中使用/注册非对象一点问题都没有,但当我想在方法中使用List作为参数时,它似乎不起作用。
这就是我目前正在工作的内容(减去突出显示哪些不起作用):

这是上面提到的不起作用的方法:

NLua不支持注册和使用作为对象的函数吗?
发布于 2022-07-07 14:01:08
不支持注册和使用作为对象的函数吗?
是的,您可以注册与您所做的类似的功能。您需要做的是传递包含要注册的方法的类的实例。
如下所示:
var myApi = new API();
lua.RegisterFunction("add", myApi, typeof(API).GetMethod("Add"));通过将列表更改为LuaTable,我能够修复您的'add‘函数。我这样做是因为从Lua传递给C#的数组实际上是Lua表。然后,您只需遍历C#端的值,并执行您需要做的事情。
如下所示:
public string Add(LuaTable target)
{
List<int> targetsToAdd = new();
foreach(var item in target.Values)
{
// FIXME: assuming item won't be null here
targetsToAdd.Add(int.Parse(item.ToString()!));
}
int sum = targetsToAdd.Aggregate((x, y) => x + y);
return sum.ToString();
}然后,在您的Lua脚本中您可以:
result = add({"2", "2"})
print(result) -- result = 4https://stackoverflow.com/questions/70662744
复制相似问题