7

スプライトキット テクスチャに関する情報を探し回っていたときに、次の引用に出くわしました。

ノードのすべての子が同じブレンド モードとテクスチャ アトラスを使用する場合、スプライト キットは通常、これらのスプライトを単一の描画パスで描画できます。一方、新しいスプライトごとに描画モードが変わるように子が編成されている場合、スプライト キットはスプライトごとに 1 つの描画パスとして実行される可能性があり、これは非常に非効率的です。

しかし、これをチェックしてください:

同じテクスチャのタイル (単なる色ではなく、テクスチャであることを保証します) テクスチャのないタイル

独自のテクスチャを持つタイル 織り目加工のタイル

使用されるすべてのテクスチャは同じアトラスからのものですが、描画カウントには 40 の違いがあります。

「アトラス」という言葉を間違って解釈していますか?

これは私が私の画像を保存する場所です:

テクスチャアトラス

私の例は「テクスチャアトラス」ですか、それともここでの「アトラス」の定義は、必要なすべての画像を含む単一の .png であり、個々のタイルはそこからスライスされていますか?

それとも、おそらくロード方法/他の何かに問題がありますか?

ありがとう!

4

1 に答える 1

7

ここでの問題は、ノード グラフ自体が原因である可能性が最も高いです。シーンの子として 100 個のスプライトがあり、それ自体のサブ子はなく、それらすべてが同じアトラスとデフォルトのブレンド モードのテクスチャを使用すると、Sprite Kit はこれらの 100 個のスプライトを 1 回の描画呼び出しでバッチ描画します。

ただし、これらのタイル スプライトに独自の子 (おそらくデバッグ用のシェイプ ノードまたはラベル ノード) がある場合、バッチ描画操作が「中断」されます。

ノード グラフを確認します。すべてのタイル スプライトが同じ親の子であり、独自の子がないことを確認し、同じアトラスの同じブレンド モードとテクスチャを使用します。その後、バッチ描画は確実に機能します。

うまくいかない場合は、tiles.atlas フォルダーがバンドル内のテクスチャ アトラスに正しく変換されていることを確認してください。コンパイルされたアプリ バンドルを開くと、「tiles.atlasc」という名前のフォルダーがあり、その中に plist と 1 つ以上の png ファイルがあり、フォルダーの個々の画像がすべて含まれています。さらに、これらの個々の画像はバンドルに表示されません。アトラスと同じ名前を使用して個別のファイルとしてバンドルに追加された場合、スプライト キットはテクスチャ アトラスから取得するのではなく、個々の画像ファイルをデフォルトでロードします。 .

于 2014-04-04T08:03:11.580 に答える