使用C++对象的指针,将其指向另一个C++对象,通过Lua来修改成员变量。
2013-3-17 3:29:7
收藏:0
阅读:113
评论:1
如何从另一个 C++ 对象中的 Lua 脚本中获取对 C++ 对象的引用?我不知道如何适当地用语言概括它,所以让我先通过一个 Lua 示例来详细说明:
function doSomething()
compo = a:getComponent()
compo:setVariable(0)
end
a 是一个 C++ 对象,而 getComponent 函数返回一个指针:
// 在 A.h 中
Component* A::getComponent();
似乎问题是 getComponent() 将 Component 对象的副本传递给了 Lua,而不是引用。我对每个返回指针的函数都遇到了同样的问题,Lua 无法修改原始对象。
如果我在 Lua 中修改 a 中的变量,则 a 似乎是正常工作的,其结果会在 C++ 中反映出来。 A 和组件以及所需的方法已经绑定到 Lua 了。
我是否在语法上漏掉了什么,还是还需要更多的操作?
我正在使用 luabind、Lua 5.1 和 MinGW。提前感谢任何帮助。
编辑
以下是 luabind 代码。我进行了总结,因为还有许多其他绑定与该问题无关:
luabind::class_<A>("A")
.def("getComponent", &A::getComponent)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
在“component”上制作一个 Lua 封装器。然后让
a:getComponent()返回 Lua 对象,而不是 C++ 对象的实际引用。在这个新的封装对象上添加任何你需要的方法。如果你有更多“对象”,则需反复这样做。简而言之:对于想要从 Lua 操纵的每个对象,您都必须创建一个 Lua 封装器。唯一的例外是在顶级对象上创建额外的函数,然后从 Lua 调用这些函数(
a:setComponentVariable(0)而不是a:getComponent()+compo:setVariable(0))。