2016-06-26 11 views
1

現在、SKTextureAtlasは大きすぎてすぐに読み込めません。それは私のゲームのすべての敵のためのテクスチャが含まれています。私はアトラスを分割して、ゲームが特定のレベルに必要なテクスチャだけをロードするようにしたい。しかし、いくつかの敵は複数のレベルで現れます。どのようにアトラスを分割すればよいですか?繰り返される敵の画像ファイルを複製する必要があるため、各レベルのアトラスを作成しないことをお勧めします。レベルが多い場合は迷惑になります。より洗練されたアプローチはありますか?ゲーム内の複数のレベルのSKTextureAtlasを分割する最も良い方法は何ですか?

+0

この場合、なぜアトラスを使用しますか?アトラスの全体像は、画像を組み合わせることです。アトラスを使わないでください。画像を分割する必要はありません。 – MoDJ

+0

SpriteKitは各テクスチャのレンダーパスを実行するため、個別に画像を使用するのは非効率的です。 –

+0

60FPSで複数のOpenGLテクスチャから同じフレームにコンポジション操作を行う際に問題は見られませんでした。おそらく、GPUとCPUが異なるメモリ空間を持ち、ある種類のメモリから別の種類のメモリに転送する必要があるMacでは、ランタイムパフォーマンスが大きく異なるかもしれませんが、iOSでAtlasを使用すると、パフォーマンスとはほとんど関係がないようです。 – MoDJ

答えて

0

レベル全体の画面上に表示されるすべてのスプライトが同じテクスチャアトラスにある場合が良いシナリオです。このシナリオでは、Texture AtlasがGPUにロードされ、そこに残ります。 各フレームの間、CPUは各スプライトの座標/位置/変換についてGPUに通知するだけで、大量のデータ転送を節約できます。

いくつかのスプライトが複数のレベルで使用できるため、いくつかのスプライトを複製する必要があることを理解しています。それはあなたのゲームの開発者としてしか取れないものです。

あなたはテクスチャアトラスを作成Apple docsから、あなたはあまりにも多くのテクスチャを集めるか、少なすぎるとの間でバランスを取るしたいと思います。画像が少なすぎると、SpriteKitはフレームをレンダリングするために多くの描画パスが必要になることがあります。あまりにも多くの画像を含めると、一度に大量のテクスチャデータをメモリにロードする必要があるかもしれません。 Xcodeはあなたのためにアトラスを構築するので、比較的簡単にさまざまなアトラス設定を切り替えることができます。テクスチャの異なる設定でテクスチャを試し、最高のパフォーマンスをもたらす組み合わせを選択してください。

+1

ありがとう!より少ないテクスチャアトラスを使用するとスプライトキットのレンダリング効率が忘れてしまったので、レベルごとに1つの方法があるようです。 –

関連する問題