Roba Memo - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

画像の容量を抑えたい

修正 2017/06/27

Jpeg画像の圧縮を、RBG Compressed ETC2 4bitsにしたら、一部の端末で処理できていなかった模様。
ということで、RGB Compressed DXT1に変更してみました。 参考にしたサイト様:

qiita.com

問題点

2Dで脱出ゲームを作ってると、大きいサイズの画像を100枚以上使ったりするので、容量が膨らんでしまうのが悩ましい。
元画像をできるだけjpegにして、画質も75%とか耐えれるギリギリまで下げたりしてたんだけど、あまり効果はなく。

そんな時に、教えてもらったのが、これ。

例えば、フォルダ上で39KBの画像。
f:id:nico-taniku:20170616161310p:plain:w600

これをunityに読み込むと、1.4MBまで膨らむ。 (単位に注目!)
f:id:nico-taniku:20170616161413p:plain:w300

そんなことになっていたのかー!ってビックリ。

原因と対策

どうやら、Unityに読み込む時に、圧縮フォーマットの設定で膨らんでしまうみたい。
ということで、そのフォーマットを適正なものに変更すればOK。

フォーマットの設定

アセットにあるjpeg画像を選択 - インスペクターでフォーマットを変更することができる。

Android jpegの場合

f:id:nico-taniku:20170616162137p:plain:w300
デフォルトだと、RBG Compressed ETC 4 bits になってる。
これを、ETC2に変更する。
overrideにチェックを入れて、RBG Compressed ETC2 4 bits RGB Compressed DXT1 にして、Applyを押す。

MipMapのチェックを外す

フォーマットを設定しても、まだ警告が残ってる場合。
f:id:nico-taniku:20170616162559p:plain:w300

Only POT texture can be compressed if mip-maps are enabled

ってな警告がでる。
ということで、Mip Mapsのチェックを外す。
f:id:nico-taniku:20170616162859p:plain:w300

警告が消えて、176.8KBとかなり減量できました。

フォーマットの種類について

これ、フォーマットの種類が色々あるけど、スマホの機種によって対応してないものもある。
未対応の場合は、読み込み時に違うフォーマットに変換されるので、その分処理が遅れるそうです。
ここに書いてるのは、素人がなんとなく、これ!で選択したものです。

Android pngの場合

pngの場合は、デフォルトがRBGAのETC2 8bitsになっているので、MipMapのチェックを外すだけ。

iOS jpegの場合

RBG Compressed ASTC 4x4 block に設定する。

iOS pngの場合

RBGA Compressed ASTC 4x4 block に設定する。

画像のサイズに注意

たとえば、431 x 69サイズの画像を RBGA Compressed ETC2 8bits にした場合
f:id:nico-taniku:20170616165740p:plain:w300

Only textures with width/height being multiple of 4 can be compressed to ETC2 format

という警告がでる。
要は、縦横のサイズを4のベキ乗にしてね。ということらしい。
いや、ベキ乗とか言われても・・・。

ということで、ざっくり計算!
4で割り切れる数字にすれば、いけるっしょ!

431 x 69 → 432 x 72 に変更したら、エラーは消えましたとさ♪