我在 C# 上使用 Lua 接口(interface)将我创建的对象传递给 lua 的函数。 它成功调用了该函数,但 lua 一直抛出错误:
LuaInterface.LuaException:/hook.lua:32: attempt to index local 'objj' (a nil value)
这是 C# 代码:
public class PerObj
{
public string name;
public PerObj()
{
}
}
PerObj obj = new PerObj();
LuaFunction lf = lua.GetFunction ("item.HookMe");
lf.Call(obj);
这是lua代码:
function item:HookMe(objj)
objj.name= "lalala"
end
该函数实际上正在被调用,但我不确定它是否正常工作...
最佳答案
将函数定义更改为:
function item.HookMe(objj)
objj.name= "lalala"
end
原定义中的冒号表示函数也有self
参数。这些函数的调用方式如下:object:HookMe()
。但是你想直接调用它,所以冒号不适用。
编辑:
如果要保留函数定义并保留 self
,请这样调用它:
lf.Call(null, obj);
要调用它还传递 self
对象:
lf.Call(lua["item"], obj);
关于c# - 你如何将对象从 c# 传递给 lua 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28935421/