c# - 你如何将对象从 c# 传递给 lua 的函数?

标签 c# .net lua luainterface

我在 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/

相关文章:

c# - SQL 查询错误

c# - 如何避免项目打开时所有代码节点都展开?

c++ - Lua中具有大用户数据的有效垃圾收集

c# - DynamoDB 数据模型中的 map 列表

c# - 取决于 MSF 中决策的参数

.net - 如何在 vs2015 中为本地发布的站点启用内存使用诊断

.net - 弃用 WCF 服务的最佳实践

.net - 使用动态 OrderBy 进行分页/分页的 Linq 表达式

lua - 如何从lua表中取出一个值?

c++ - Lua:从 c 导出类时的方法和属性