2017-06-11 19 views
1

私は構築しているプラ​​ットフォーマーゲームのラグに問題がありました。そこで私はパフォーマンスを改善する方法を研究しています。atlasファイルとSpriteKitを使用したバッチ描画の問題

私はバッチ描画をしようとしているので、描画呼び出しが少なくなっています。私は問題を抱えています。したがって、新しいプロジェクトでは:

私は4つのヒーロースプライトを持っています。すべての画像は.atlasフォルダに保存されています。したがって、atlasフォルダには、各スプライトごとに1/2/3xのイメージがあります。

ドラッグしてxcassetsフォルダにドロップします。それから私はsksファイルに4スプライトを作成し、それに応じてテクスチャを変更します。

デフォルトでは、すべてのブレンドモードは同じです。私は兄弟の順序を無視するためにtrueに設定されている既定のルールを持っています。スプライトはすべてデフォルトのz 0レイヤーにあります。私はドローカウントを表示するように設定しました。

私はすべての画像が同じアトラス・ファイルであるため、1つの引き分けを見ることを期待するが、私は

4.私は欠けているものがある参照してください?

これが正しく動作する方法を知りたいだけです。助けてくれてありがとう!

答えて

1

xcassetsに画像が置かれていても描画呼び出しが減少しないiOS 9のxcassetsにバグがありました。どうやらそれはそれ以降のバージョンで修正されましたが、それ以来、私はxcassetsに悩まされませんでした。代わりに、プロジェクトの別々の.atlasフォルダに画像を配置します。これにより描画呼び出しが減ります。

4つのスプライトを同じテクスチャで配置し、描画呼び出しが何であるかを確認してください。スプライトが同じテクスチャを使用している場合は、4にしないでください。私はまた、8つのスプライト(4つの異なるテクスチャ* 2スプライト)を追加し、ドローコールが8に増加するかどうかを確認することをお勧めします。

ドローコールが増加しない場合は、あなたが4つの異なるスプライトを描画するのに必要です(非常に複雑なスプライトの場合)。ドローコールが増加する場合は、xcassetsからイメージを削除して、プロジェクトの別の.atlasフォルダに配置し、ドローコールを比較してみてください。

+0

コメントありがとうございます。私はxcassetsの代わりにatlasフォルダを使ってテストしましたが、同じ結果が得られます。私が同じイメージを使用すると、カウントは1に落ちます。イメージが同じアトラスファイルにあれば、それは1回のドローコールしか取らないという印象を受けました。私のイメージもそれほど複雑ではありません。 – Discoveringmypath

+0

ここでは、バッチ処理に関するAppleのビデオへのリンクです:https://developer.apple.com/videos/play/wwdc2014/608/ 20〜22分にジャンプすると、それについて話します。 – Discoveringmypath

+0

描画回数が1になり、同じイメージのスプライトが多くなった場合、正常に動作していると思います。私の(基本的な)理解は、テクスチャ毎に1回の描画呼び出しがあるということです。しかし、スプライト40個、スプライト10個、テクスチャが異なる場合、同じテクスチャが再利用されるため、描画回数は4回にとどまります。 – JohnV

関連する問題