我正在尝试确定在使用Corona SDK编写的游戏中处理以下任务的最佳方式和最有效的方法。似乎有很多方法可以让事情变得令人困惑,所以我希望有人可以提供帮助!
我正在创建一个冒险类游戏,它将拥有一个库存系统/谜题等。到目前为止我开发的思维过程涉及使用单独的“类”来处理游戏的每个特定方面。如InventoryManagement.lua,ObjectManagement.lua,PuzzleManagement.lua等。
只是旁注 - 这个游戏真的不涉及物理学,但我希望有动画发生的静态图像(想想打开一扇门或拿起一个物体):
这是我想要完成的一个例子:
现在对我来说,每次进入/离开场景时加载/卸载场景都是有意义的,但是......如果这样做的话,这不会成为内存密集型等等吗? ...如果在屏幕上有30个对象,是否有更好的方法来处理场景?
希望很清楚 - 很难找到与这些元素中的每一个相关的具体信息。一切似乎与物理游戏有关,我似乎无法找到关于如何“添加一个键到场景,如果,但不是,如果它已经被使用然后动画那扇门”的东西:(
谢谢!
答案 0 :(得分:2)
在故事板之间跳转时遇到意外结果的同样问题。我发现的一件事是
Runtime:remove
并停止使用的计时器。当您想要重置所有内容时,另一种方法是制作reset.lua
文件,然后在enterScene
上使用storyboard.removeScene
或storyboard.purgeScen
e(如果您只是想摆脱所有显示你在scene:createScene
)内存中绑定的对象。 还可以查看storyboard.RemoveAll()
或purgeAll()
答案 1 :(得分:1)
你需要在全局空间中制作一些东西(使用_G)在场景之间使用它们。
要在场景之间切换,“故事板”非常好。
但是请注意,如果你的内存太多,你需要使用一些手动内存黑客,主要是你可能需要在加载一个场景之前,在清理完最后一个场景后做几次“collectgarbage”调用,否则你会遇到一个奇怪的问题:
你加载了场景“A”。
切换到场景“B”。
游戏'卸载'“A”,但垃圾收集器没有,然后加载“B”,最终结果是内存使用“A”+“B”。
在this adventure game I was making in Corona,它导致了几次疯狂的撞击,直到我想到了“收集垃圾”的伎俩。