我正在使用Swift和SpriteKit构建我的第一个游戏,而且我在CPU使用和电池寿命方面遇到了很多问题。我想知道在后台线程中运行某些任务(例如实例化坏人)是否是常见的做法;如果是这样我将如何实施呢?
答案 0 :(得分:5)
如果这是你的第一款游戏,除非你真的知道自己在做什么,否则你可能不想因多线程而疯狂。请注意,必须在运行SKNode
的同一线程上完成对SKView(Private) _update:
的操作。这与运行runAction
块的线程相同。如果你不这样,你就会崩溃。在我正在开发的SpriteKit游戏中,我是多线程的,没有使用SKAction
或runAction
进行任何更新。我最终必须添加runAction
来进行树管理。由于这个原因,我目前正在OpenGL中重写它。
有些任务对卸载有意义,比如加载文件甚至网络调用。您应该使用GCD来处理这些类型的事情。请记住,多线程不会像您想象的那样减少CPU时间。
可能是你的代码做了坏事,导致你吃CPU时间。即使你是多线程的,你也会得到相同的高CPU,但是调试时会遇到更困难的问题。请注意,我并不是说不可能。
花时间弄清楚为什么你的CPU使用率很高。基于你的其他线程,你没有做很多事情。
作为实验,请参考该太空船示例并在您的设备上运行它。继续添加船只并查看它对CPU的作用。了解在CPU和FPS降级之前必须添加的数量。与你的游戏相比,请记住,宇宙飞船的例子只是一个简单的演示。