你如何将一个对象从C#传递到Lua的函数中?
2015-3-9 10:37:30
收藏:0
阅读:108
评论:2
我正在使用C#上的Lua接口,将我创建的对象传递给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
该函数实际上已经被调用,但我不确定它是否正在工作...
点赞
用户2226988
似乎问题在于 Lua 方法的设计(但这实际上取决于意图):
而不是
function item:HookMe(objj)
-- self not used
objj.name= "lalala"
end
在给定的示例中,这将更有效:
function item:HookMe()
self.name= "lalala"
end
原因(在其他答案中已经讨论得很好)是使用方法语法(:)声明函数时会添加一个隐含的第一个正式参数 self。调用者可以将任何东西作为第一个实际参数传递,但是合同通常要求传递函数的父表,以便它可以访问其兄弟字段。
在这种情况下,name 似乎是 HookMe 的兄弟,因此该方法不应该在传递为 objj 的任意表上运作,而应该在 self 上运作。
2015-03-10 16:37:51
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
将函数定义修改为:
function item.HookMe(objj) objj.name = "lalala" end在原始定义中的冒号表示该函数也具有
self参数。这些函数可以像这样调用:object:HookMe()。但是您想直接调用它,所以冒号无法应用。编辑:
如果您想保留函数定义并保留
self,请像这样调用它:要传递
self对象调用它:lf.Call(lua["item"], obj);