在Lua 5.2中返回一个C++对象的实例?
2013-10-21 15:24:27
收藏:0
阅读:91
评论:1
我已查看了多个来源,但我就是不理解它们。大多数都是使用像luaBind这样的库(我不想使用它,因为它依赖于Boost)或者它们不是已经在C++中实例化的对象,而是在Lua中直接创建的。
我有一个Player类,它被包装在另一个类中以处理Lua调用。我已经在应用程序的初始化中创建了这些对象的std::vector列表。
因此,基本上我不希望Lua脚本创建这些Player对象,我只想创建一个名为getPlayer()的函数,然后返回Lua包装的对象。我不知道从哪里开始定义Lua包装的对象供Lua调用,也不知道如何返回对象的实例,以便我可以使用它的调用。
这是我想要我的Lua脚本的样子的例子:
player = getPlayer(1) -- 从C++中返回包装的Lua对象,其中1是std::vector列表中对象的索引
print("Player's name: ", player:name()) -- 打印玩家的名称
有人能指点一下我一个好的教程,解释如何做到这一点吗?我相信这不是某种"从未发生过,你为什么要这样做"的情况,所以肯定至少有一个教程。我已经搜索了约2天,没有任何积极的结果。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
这不是一个“从未尝试过”的任务,但是使用Lua的公司已经对原始的Lua源代码做了很多改变和改进,使其适应他们想要的地方。由于我们所有程序员都不太酷进行第三方源代码的这种工作,所以我们必须使用存在的东西。您认为Crytek正在使用与其网站存储库上的完全相同的Lua版本吗?不,先生。
您可以使用[userdata](http://lua-users.org/wiki/UserDataExample)使此成为可能。或者,您可以使用[元表](http://lua-users.org/wiki/DoItYourselfCppBinding)。还有另一段名为[Luna](http://lua-users.org/wiki/SimplerCppBinding)的代码,它可以帮助您更快地实现。
否则,所有这些都是Luabind,相信我,您将以一种或另一种方式使用它。此外,它对Boost的使用并不广泛,最终可执行文件只会增加200kb。如果您想在某个时候使用Luabind,请查看此地址,它是Web上真正不错的文章。 http://blog.nuclex-games.com/tutorials/cxx/luabind-introduction/
如果您对Lua感到太无聊,我可能建议您使用[squirrel](http://www.squirrel-lang.org/)作为Lua的替代方案。就我个人而言,我更喜欢松鼠比Lua,因为它的C语言语法以及它的能力是我们想要的。此外,您甚至可以在其上下文中声明常量并使用真实类,而这是Lua相当失败的。有趣的是,关于松鼠的事情是,设计师是一个正在开发Lua引擎的FarCry的人。