我目前正在学习如何使用 Lua C API,虽然我在 C/C++ 和 Lua 之间成功绑定了函数,但我有几个问题:
将多个脚本加载到一个中是个好主意lua_State吗?有没有办法关闭特定的块?如果不再使用脚本,如何lua_State在保留其他所有内容的同时将其清除?
使用可能对函数/全局变量使用相同名称的脚本的最佳方法是什么?如果我加载所有这些,新的定义会覆盖旧的。
在线阅读后,我认为我需要将每个加载的块分离到不同的环境中。我设想的这种工作方式是每次加载一个块时,我都会为它分配一个唯一的环境名称,当我需要使用它时,我只需使用该名称从 中获取环境LUA_REGISTRYINDEX并执行操作。到目前为止,我还没有想出如何做到这一点。网上有例子,但他们使用 Lua 5.1。
我总是得到一个非常直接的反应,如果"如果要成为父母的子类型,则使用继承".这在我做小项目时起作用,但是当我开始研究2D游戏引擎时,我遇到了相互矛盾的情况.
假设我有一个基类GameObject,为了参数,它有50个函数和5个成员变量.这些函数包括setter,getters,动画函数,渲染,移动等.对于我的玩家和敌人来说,它是一个完美的基础.
但我也有像物品和道具这样的对象,只需要(我只希望能够访问)10个从GameObject继承的函数.我的项仍然可以定义为GameObject,但它不会移动或有任何动画.
该怎么办?我是否继承并忽略额外的功能,创造浪费的内存?我是否会重写这10个功能,浪费时间?我是否将GameObject作为Item和Prop的私有成员变量,再次浪费内存但允许我阻止访问任何不需要的函数?或者我从GameObject中删除所需的10个函数并将它们粘贴在一个单独的标题中,创建一个辅助函数库?
编辑:
谢谢你的回复.几乎每个人都说将GameObject类拆分为更好定义的基类或使用组合.