Open SpriteStudio opened 9 years ago
・1. 1つのアニメで使っているテクスチャが1つの場合
複数アニメ間でもバッチされドローコールは減ります。 ただし、異なるテクスチャや合成方法を使っているアニメ同士では、Z座標が同じ値の場合、 互いのパーツが重なり合っていなくても自動的にはバッチされません。 このため、テクスチャ別にレイヤーを意識したZ座標の指定が必要になります。
例を出すと下記のようになります。
A) 下記の様に3つのアニメプレハブを互いが重なり合わないようにX/YをずらしてZ座標をすべて同じにすると、ドローコールが2か3になります。 (2になるか3になるかは、Unityの内部処理でのオブジェクトの実行順序に依存し、実行時毎に異なる可能性があります)。
例:
B) 上記のZ座標を下記のように3つのレイヤーに分けても、やはりドローコールが3になります。
C) テクスチャAを前面(Z=0) に テクスチャBを背面(Z=10) にするとドローコールは2になります。
・2. 1つのアニメで2つ以上のテクスチャを使っている場合
別のオブジェクト間では、ほとんどバッチングはされません。 (※理由は "Q. 想定以上にドローコールが増えるのはなぜですか?" をご覧ください) つまり、1つのアニメで2つのテクスチャを使いドローコールが2となる場合は、 同じアニメのオブジェクトでパーツが重ならないように配置しても、 ほぼオブジェクトの数だけドローコールが増えます。
テクスチャを2枚使用したアニメーションオブジェクトを3つ配置した場合の例。
この場合テクスチャAとテクスチャBの切り替え時にドローコールが発生し、ドローコールは6になります。
ただし、バッチングが一切きかないかというと、そうではなく、ドローコールが削減される場合があります。 その場合の例には、下記のような場合があります。
この場合ドローコールは(9ではなく)7になります。
・1. 1つのアニメで使っているテクスチャが1つの場合
複数アニメ間でもバッチされドローコールは減ります。 ただし、異なるテクスチャや合成方法を使っているアニメ同士では、Z座標が同じ値の場合、 互いのパーツが重なり合っていなくても自動的にはバッチされません。 このため、テクスチャ別にレイヤーを意識したZ座標の指定が必要になります。
例を出すと下記のようになります。
A) 下記の様に3つのアニメプレハブを互いが重なり合わないようにX/YをずらしてZ座標をすべて同じにすると、ドローコールが2か3になります。 (2になるか3になるかは、Unityの内部処理でのオブジェクトの実行順序に依存し、実行時毎に異なる可能性があります)。
例:
B) 上記のZ座標を下記のように3つのレイヤーに分けても、やはりドローコールが3になります。
例:
C) テクスチャAを前面(Z=0) に テクスチャBを背面(Z=10) にするとドローコールは2になります。
例:
・2. 1つのアニメで2つ以上のテクスチャを使っている場合
別のオブジェクト間では、ほとんどバッチングはされません。 (※理由は "Q. 想定以上にドローコールが増えるのはなぜですか?" をご覧ください) つまり、1つのアニメで2つのテクスチャを使いドローコールが2となる場合は、 同じアニメのオブジェクトでパーツが重ならないように配置しても、 ほぼオブジェクトの数だけドローコールが増えます。
テクスチャを2枚使用したアニメーションオブジェクトを3つ配置した場合の例。
この場合テクスチャAとテクスチャBの切り替え時にドローコールが発生し、ドローコールは6になります。
ただし、バッチングが一切きかないかというと、そうではなく、ドローコールが削減される場合があります。 その場合の例には、下記のような場合があります。
この場合ドローコールは(9ではなく)7になります。