在 sprite-kit 中,我正在制作一款包含不同场景中不同级别的游戏。我很好奇如果只是过渡到一个场景会删除另一个场景,还是它们会继续堆积并占用 CPU 使用率?我正在以这种方式转换它们。
let reveal = SKTransition.fade(with: UIColor.white, duration: 1.5)
let scene = level2(size: self.size)
self.view?.presentScene(scene, transition:reveal)
最佳答案
最佳实践 #1
在执行游戏时,在内存中只保留一个场景通常是一种很好的做法。
最佳实践 #2
另一个好的做法是避免强保留引用循环。特别是不应存在场景的后代节点,并强烈引用场景本身。
当前场景
那是在你调用的时候说的
self.view?.presentScene(scene, transition:reveal)
从 SKView
到场景的强引用被移除。因此,如果您遵守上述 2 个假设,场景将自动取消初始化并从内存中删除。
测试
你可以自己测试一下。只需将其添加到您的游戏场景中即可
deinit {
print("GameScene deinit")
}
该方法在实例取消初始化时自动调用。
现在运行
self.view?.presentScene(scene, transition:reveal)
并在日志中查找 "GameScene deinit"
。
关于ios - 更改场景时是否必须删除场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39584333/