我目前正在使用 Lua 进行 MOAI 项目。我正在尝试为一些游戏对象设置一些压力测试,然后跟踪我在游戏会话期间创建和销毁的 Lua 对象的时间。我可以轻松跟踪“类”对象/表何时被创建通过增加构造函数或初始化程序中的计数来初始化。但是,由于 Lua 没有析构函数,我不确定如何跟踪对象何时从内存中删除。
非常感谢您对此事的任何帮助或建议。谢谢!
我目前正在使用 Lua 进行 MOAI 项目。我正在尝试为一些游戏对象设置一些压力测试,然后跟踪我在游戏会话期间创建和销毁的 Lua 对象的时间。我可以轻松跟踪“类”对象/表何时被创建通过增加构造函数或初始化程序中的计数来初始化。但是,由于 Lua 没有析构函数,我不确定如何跟踪对象何时从内存中删除。
非常感谢您对此事的任何帮助或建议。谢谢!
要在 Lua 对象(我假设完整的用户数据或表)消失时收到通知,您可以为它设置一个_gc 元方法。
也许弱表是你的答案,嵌套。这是一个片段:
objectArray={}
function newObj(...)
--your OOP code here
--obj is the new table you made
objectArray[#objectArray+1]=setmetatable({obj},{__mode='v'})
end
现在,在每帧运行的函数/块中:
for i=1,#objectArray do --no pairs for efficiency, being run every frame this matters
local stillThere=#objectArray[i]
stillThere=stillThere==1
if not stillThere then deconstruct() end
end
不幸的是,你不能把桌子拿回来。我不确定是否有一个简单的解决方案,因为 __index 会停止 GC。