私はSwiftとSpriteKitで最初のゲームを構築していますが、CPU使用率やバッテリ寿命に関して多くの問題がありました。バックグラウンドスレッドで悪意のある人をインスタンス化するなどの特定のタスクを実行するのが一般的なプラクティスであるかどうかを知りたかったので、もしそうなら、私はそれをどのように実装するのでしょうか?SpriteKitプロセスをバックグラウンドスレッドで実行してCPU使用率を向上させる
答えて
初めてのゲームの場合、実際に何をしているのか分からない限り、複数のスレッドで夢中になりたくないかもしれません。 SKNode
の操作は、SKView(Private) _update:
が実行されているのと同じスレッドで行われなければならないことに注意してください。これは、runAction
ブロックが実行されるのと同じスレッドです。あなたがしなければ、あなたはクラッシュするでしょう。私が作業していたSpriteKitのゲームでは、マルチスレッドで、SKAction
またはrunAction
を使用していませんでした。私は最終的にツリー管理のためにrunAction
を追加しなければならなかった。私は現在、このためにOpenGLでこれを書き直しています。
ファイルのロードやネットワークコールなど、オフロードするのに適したタスクがいくつかあります。これらの種類のものにはGCDを使用する必要があります。マルチスレッディングは想像しているようにCPU時間を短縮しません。
あなたのコードはあなたがCPU時間を食べさせている何か悪いことをしています。たとえマルチスレッドであっても、同じ高CPUで終了しますが、デバッグがより困難になるという問題があります。私はそれを不可能と言っているわけではありません。
時間を費やして、CPU使用率が高い理由を実際に把握してください。あなたの他のスレッドに基づいて、あなたは多くをやっていません。
実験として、この宇宙船の例をあなたのデバイス上で実行してください。船を追加し続け、CPUに何をするかを確認してください。 CPUとFPSが低下する前に追加する必要のある数を調べます。それをあなたのゲームと比較してみましょう。宇宙船の例は単なるデモです。
私は実際にそのデモで遊んでいました。私の驚きには、遅れなく約200%の船を追加することができました。私は、あなたのコメントでは一目瞭然だったように思えるかもしれませんが、本当に感謝して、私が間違っていることを理解するために毎日仕事をしています。これまでのところ私は船クラスでいくつかのことを改善することに成功しましたが、100%CPUへの全体的な傾向は変わりません。それは、インスタンス化、更新時の過剰な呼び出し、および他のいくつかの船の機能から生じると思われます。 – Sam
SKNodeを主スレッドから操作することができます。主スレッドでは何もしません。基本的にシーンツリーの一部でない場合は – Knight0fDragon
です。これを一般化してシンプルにします。私は、これを忘れて、シーン階層にある何かの上で 'addChild'を試してみるほうが簡単です。また、必ずしもクラッシュするとは限りません。タイミングがレンダリングサイクルに対応すると、クラッシュが発生します。 –
- 1. ProcessorIdと実行中のすべてのプロセスのCPU使用率
- 2. DB集約型タスク用の並列ストリームを使用してCPU使用率を向上させよう
- 3. トップコマンドは、プロセス内からプロセスのCPU使用率をチェックすると0%のCPU使用率を返します。
- 4. Bulk DocumentDB挿入によりCPU使用率が向上する
- 5. SKPhysicsBodyがCPU使用率を上げる
- 6. py.test実行時のCPU使用率とメモリ使用率
- 7. Perfmon showプロセスのCPU使用率
- 8. オープンソースツールを使用してプロセスCPU、メモリ使用率を取得する方法
- 9. SpriteKitゲームでのCPU使用率が高い
- 10. SpriteKitのCPU使用率が非常に高い
- 11. WMIを使用してリモートマシン上で実行中のプロセスの現在のメモリ使用率を取得
- 12. cpuコアが100%CPU使用率でスタックされている
- 13. iPhone SDK - バックグラウンドスレッドで繰り返しプロセスを実行する
- 14. プロセスのCPU使用率を取得する
- 15. LinuxプロセスのRAMとCPU使用率を記録する方法
- 16. powershellのCPU使用率のプロセスを取得する
- 17. プロセス名とログCPU使用率でフィルタリングする
- 18. マルチスレッドで未知のプロセスによるCPU使用率が高い
- 19. GoLangアプリケーションでC(++)を使用してパフォーマンスを向上させる
- 20. Ruta Script実行中にCPU使用率が高すぎる
- 21. 実行中にCPU使用率が非常に高くなる
- 22. OperatingSystemMXBeanを使用してCPU使用率を取得する
- 23. Debian:bashを使用してCPU使用率を調べる
- 24. 別のバックグラウンドスレッドとプロセスで長時間のバックグラウンドタスクを実行する
- 25. CPU使用率スパイク
- 26. CPU使用率を100%に
- 27. VBAで検索する代わりに配列を使用して効率を向上させる方法
- 28. "proc"ファイルシステムを使用して、Linuxで実行中のすべてのプロセスのCPU使用率を計算する方法は?
- 29. javaプロセス実行プログラムを使用してcell -scriptを実行できません
- 30. トップバッチモードでのCPU使用率
SKShapeNodeを使用していますか? –
あなたの質問を遅れの原因に変え、いくつかのコードを投稿してください。なぜあなたが遅れているのか、人々はあなたを助けることができます。さもなければ私たちは速い4が出てくるまでゲームを推測することができます – Knight0fDragon