コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】SpriteAtlas にテクスチャを含める時は元のテクスチャの圧縮設定が反映された状態でテクスチャアトラスに描き込まれる

概要

f:id:baba_s:20200514212313p:plain

例えば上記のようなグラデーションのテクスチャを
Unity プロジェクトに2つ追加して

f:id:baba_s:20200514212337p:plain

1つは RGBA 32 bit、

f:id:baba_s:20200514212353p:plain

もう1つは RGB 16 bit の圧縮設定を適用すると

f:id:baba_s:20200514212432p:plain

ゲーム中に描画する時に、圧縮設定が反映されていることが確認できる
(左が RGBA 32 bit、右が RGB 16 bit、右のグラデーションが少し粗くなっている)
ここまでは問題ない

f:id:baba_s:20200514212509p:plain

この状態で SpriteAtlas を作成して、前述した2つのテクスチャをパッキングするようにして
SpriteAtlas に RGBA 32 bit の圧縮設定を適用してゲームを開始してみると

f:id:baba_s:20200514212557p:plain

SpriteAtlas は RGBA 32 bit だが右のテクスチャは
元のテクスチャの圧縮設定が反映されており
グラデーションが粗くなっていることが確認できる

f:id:baba_s:20200514212646p:plain

SpriteAtlas はちゃんと適用されているのでバッチ回数は1回になっている

f:id:baba_s:20200514212731p:plain

ゲームをビルドしても同じ状況

f:id:baba_s:20200514213550p:plain

SpriteAtlas のテクスチャアトラスを見てみると
元のテクスチャの圧縮設定が反映された状態で
テクスチャアトラスに描き込まれていることがわかる

なので、SpriteAtlas を使用する時は、SpriteAtlas に含めるテクスチャの
元の圧縮設定にも注意する必要がある