使用一个或多个SKScenes进行基于级别的游戏

时间:2017-01-11 20:43:00

标签: sprite-kit

我正在使用SpriteKit制作基于关卡的游戏。我想知道进行等级更改的最佳做法。我最初使用一个场景作为我的游戏场景,当一个关卡完成后,它会移除场景中的所有节点,然后将其添加到下一个关卡。我正在使用一个在整个游戏过程中持久的后台节点。我担心内存,因为我不认为ARC将取消分配删除的节点,因为场景是持久的。这个方法是正确的还是我应该在级别变化时实例化一个新场景?

1 个答案:

答案 0 :(得分:2)

最佳做法是将游戏数据和资产与游戏代码分开。这样,您可以在不必重新编译的情况下对内容进行更改(如果您正与另一个不编码代码的人合作,则非常方便。)

以下是苹果在WWDC 2014上对此有何看法:  :

当你在场景之间转换时,ARC将取消分配前一个场景,假设你没有强烈引用它。既然你已经开始了它,你现在不太可能需要担心这个......它主要用全局和闭包来完成,你应该能够修复它如果< / em>它成为一个问题(但很可能赢了)。

您可以使用unowned selfweak var等内容来确保在需要时不会发生这种情况。同样,这是一个更高级的主题,但了解它们是件好事。

真的,进行等级更改完全取决于你...如果你想让一个状态管理器将东西交换到一个场景,你当然可以这样做......或者,你可以制作一堆场景和过渡到那个。同样,这里的最佳做法是将游戏内容与游戏代码分开,而不一定是如何切换场景。

就个人而言,我会使用单独的SKScenes - 因为它已经内置了转换,内存管理 - 您可以选择使用编辑器,并且可以为每个场景提供它& #39;如果需要,自己的文件。

还有GameplayKit有一个州管理者,在这种情况下你可以使用一个场景,并且不同的状态就是等级。

这里有一些资源,埋在里面有一些与你想要的有关的金块。

https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/DesigningGameswithSpriteKit/DesigningGameswithSpriteKit.html

https://developer.apple.com/videos/play/wwdc2014/608/

https://developer.apple.com/library/content/samplecode/DemoBots/Listings/DemoBots_SceneManager_swift.html