为 Lua 创建属性。

我不确定标题的措辞,但让我们开始吧。

假设我创建了一个 Lua 函数,在屏幕上创建一个二维框 - 例如:

box = createObject("Box")

我该如何为 box 创建属性,以便随后更改 box 的外观或反应?例如,我可能想做到这样:

box.PositionX = 0
box.PositionY = 60

我该如何在 C++ 中实现这一点?

点赞
用户3204551
用户3204551

回答直接问题时,事情很简单:

只需使用标准的元表感知“添加/设置表指数”API即可。

如果我们看一下盒子本身应该如何看待,事情就变得有趣了:

  1. 如果createObject "Box"返回一个Lua表且您不需要立即对更改做出反应,则不需要做任何特殊处理。

  2. 如果createObject "Box"返回一个Lua表但您需要立即做出反应,则让它充当代理对象,即通过从未将该元素添加到表中强制使用元表函数。重新映射到另一个指数或在专用指数或元表/元表函数闭包中保存到另一个表中。

  3. 如果createObject "Box"返回一个userdata,请执行与2相同的操作,可能将非Lua值保存在C中以提高访问速度/效率,并使用环境表处理所有其他值。

2014-04-20 16:50:03