在后台线程中运行SpriteKit进程以提高CPU使用率

Sam*_*Sam 2 multithreading background-process sprite-kit swift

我正在使用Swift和SpriteKit构建我的第一个游戏,而且我在CPU使用和电池寿命方面遇到了很多问题.我想知道在后台线程中运行某些任务(如实例化坏人)是否是常见的做法; 如果是这样我将如何实施呢?

Mob*_*Ben 5

如果这是你的第一款游戏,除非你真的知道自己在做什么,否则你可能不想疯狂使用多个线程.请注意,SKNode必须在SKView(Private) _update:运行的同一线程上完成对s的操作.这与runAction运行块的线程相同.如果你不这样,你就会崩溃.在我正在进行的SpriteKit游戏中,我是​​多线程的,并没有使用SKActionrunAction进行任何更新.我不得不最后添加runAction树管理.因为这个原因,我目前正在OpenGL中重写它.

有些任务对卸载有意义,比如加载文件甚至是网络调用.您应该使用GCD来处理这些类型的事情.请记住,多线程不会像您想象的那样减少CPU时间.

可能性是您的代码正在做坏事,这会导致您占用CPU时间.即使你是多线程的,你也会得到相同的高CPU,但是调试时会遇到更困难的问题.注意我不是说它不可能.

花时间,弄清楚为什么你的CPU使用率很高.基于你的其他线程,你没有做很多事情.

作为实验,请参考该太空船示例并在您的设备上运行它.继续添加船只并查看它对CPU的作用.了解在CPU和FPS降级之前必须添加的数量.与你的游戏相比,请记住,宇宙飞船的例子只是一个简单的演示.

  • @Sam,不用担心.由于这是你的第一场比赛,许多细节可能是压倒性的.很容易尝试并过早地继续前进,并希望更新的闪亮方法将解决您的问题.其中许多方法都变成了潘多拉盒子,因为它们只是导致更新的更复杂的问题,这些问题由于不一定完全掌握新方法或现有代码所做的事情而变得更糟.我建议您将问题分开(例如,实例化,更新,其他),并将每个问题分解为更简单的问题/组件,您可以禁用然后重新启用.掌握这是一项宝贵的技能. (2认同)