アプリケーションが60fps前後でスムーズに動作していても、新しいノードが画面に表示されたときにSceneKitアプリ(メタルを使用)で吃音が発生しました。新しいノードが表示されたときにSceneKit app stutters
物が破壊され、何かが破壊された場所にパワーアップが現れるゲームを想像してください。私は、吃音がパワーアップに関係していることを確信しています。なぜなら、物事がちょうど破壊されたときに(そしてシーンから取り除かれて)起きないからです。 SceneKitビューのプリロードメソッドを使用してノードをプリロードし、そのシーンを完了ハンドラ内でのみシーンに追加します。 私はそれらを表示する必要があるよりずっと前にカメラの上に追加し、時間が来たら私はそれらを正しい位置に移動します。 私は、1つの変更(破棄されたアイテムのノードを削除し、その場所でパワーアップを移動する)がフレームごとに行われるようにキューイングのメカニズムを実装しました。
ただし、電源がオンになっても吃音が(時には起こらない)場合があります。私はSceneKitが何かをやっているのかどうかは、ノードが初めて表示されたときだけ(たとえプリロードされていても)疑問に思っています。どんなことが起こっても吃音を引き起こすのに十分だと思われますが、XCodeパフォーマンスメーターがそれを示すには短すぎます。あらゆるフレームには多くのアイドルタイムがあり、CPUとGPUは決して限界に近づいていません。
複雑なジオメトリや巨大なテクスチャに関連しているとは思えません。なぜなら、均一な色で単純なキューブを使用すると、それでも問題が発生するからです。
ここで何が起こっているのか、これをどのように追跡することができますか?