小编inz*_*iak的帖子

单个 Lua 状态下的多个脚本并使用 _ENV

我目前正在学习如何使用 Lua C API,虽然我在 C/C++ 和 Lua 之间成功绑定了函数,但我有几个问题:

  1. 将多个脚本加载到一个中是个好主意lua_State吗?有没有办法关闭特定的块?如果不再使用脚本,如何lua_State在保留其他所有内容的同时将其清除?

  2. 使用可能对函数/全局变量使用相同名称的脚本的最佳方法是什么?如果我加载所有这些,新的定义会覆盖旧的。

    在线阅读后,我认为我需要将每个加载的块分离到不同的环境中。我设想的这种工作方式是每次加载一个块时,我都会为它分配一个唯一的环境名称,当我需要使用它时,我只需使用该名称从 中获取环境LUA_REGISTRYINDEX并执行操作。到目前为止,我还没有想出如何做到这一点。网上有例子,但他们使用 Lua 5.1。

lua lua-c++-connection lua-api c++11

5
推荐指数
1
解决办法
3781
查看次数

何时适合使用继承?

我总是得到一个非常直接的反应,如果"如果要成为父母的子类型,则使用继承".这在我做小项目时起作用,但是当我开始研究2D游戏引擎时,我遇到了相互矛盾的情况.

假设我有一个基类GameObject,为了参数,它有50个函数和5个成员变量.这些函数包括setter,getters,动画函数,渲染,移动等.对于我的玩家和敌人来说,它是一个完美的基础.

但我也有像物品和道具这样的对象,只需要(我只希望能够访问)10个从GameObject继承的函数.我的项仍然可以定义为GameObject,但它不会移动或有任何动画.

该怎么办?我是否继承并忽略额外的功能,创造浪费的内存?我是否会重写这10个功能,浪费时间?我是否将GameObject作为Item和Prop的私有成员变量,再次浪费内存但允许我阻止访问任何不需要的函数?或者我从GameObject中删除所需的10个函数并将它们粘贴在一个单独的标题中,创建一个辅助函数库?

编辑:

谢谢你的回复.几乎每个人都说将GameObject类拆分为更好定义的基类或使用组合.

c++ inheritance

3
推荐指数
1
解决办法
181
查看次数

标签 统计

c++ ×1

c++11 ×1

inheritance ×1

lua ×1

lua-api ×1

lua-c++-connection ×1