所以 Obj 这个问题有一个部分答案。 C. 我只是在问 Swift 中相同想法的机制。此外,我想比较和对比切换 View Controller 和切换场景作为游戏及其主菜单之间切换的方式。 Presenting a scene in SpriteKit without discarding the previous?
在上一节中,作者说当我在 ViewController
中呈现一个新场景时,场景会被完全丢弃,在 spritekit/swift 中是这样吗?我正在做的是我有几个场景(GameScene、MainMenuScene、OptionsScene 等),我不断地在它们之间切换,作为完全切换 View 的一种方式。这会删除与该 GameScene 实例关联的所有数据吗?我不希望这些数据的任何残留物随着时间的推移而减慢我的游戏速度。此外,有些人建议切换 ViewControllers 而不是 MainMenu 等场景的想法。每种方法的优点和缺点是什么?
最佳答案
是的,当你呈现一个新场景时,它会删除与场景相关的数据,除非你有某种强大的引用循环。如果你有一个强引用循环,你的场景和关联的对象会留在内存中,你无法访问它们。不好。
判断场景是否从内存中删除的一种简单方法是在场景中放置一个 deinit
方法,并在其中打印一些内容。如果调用 deinit,则您的场景已被删除。
如果您想准确查看游戏中不同点存在的对象,您可以使用分配工具。 您可以在 XCode > Open Developer Tool > Instruments
下找到它关于iOS/Swift/Spritekit 在我在该 View Controller 中呈现新场景后,场景是否会删除数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113695/