我目前在一个游戏项目中,必须将 Lua 集成到游戏引擎中,以向脚本用户公开游戏对象和组件的接口。
我试图研究将 C++ 类对象绑定到 Lua 的方法,我发现大多数文档都解释了如何使用 userdata 类型进行绑定。
然而,我们的项目自己管理游戏对象(这意味着我们决定何时删除、创建游戏对象),我想知道我是否可以禁用 Lua 的垃圾收集。具体来说,我可以尝试将__gc
metatable 替换为 nil 或什么都不做的函数吗?
我的补偿是使用包含 lightuserdata(this 指针)的表和检索“this 指针”并手动调用成员函数的静态函数。然而,由于程序员应该手动制作包装器静态函数,它很快就会变得肮脏且难以管理。
我可以获得一些正确使用的良好文档或您对类似问题的解决方案的链接吗?