2018/12/05

Unity|アプリを軽量化するためにデザイナーができること
の記事の続きです
テクスチャの最適化をしたら次はアトラスを最適化していきます
またもや基本の基本で恐縮ですがアプリ初めてトライするわ―みたいな人のお役に立てばうれしいです…!(^O^)
アトラスの使い方を見直す
アトラスの中で使われていない画像を駆逐していきます。1匹…ッ残らず…!
可能な限り1024×1024に収まることを目指して作っていきます。
2048×2048はけっこうでかいのでそれだけできついですよね。
どうにか1024に収まるように画像をやりくりしていきます。
いちおう最大サイズは4096まで選択可能だけど
このサイズって実用されとるんかなー?
2048×1024系もありますがこれはあまり意味が無いようです。
2048×2048と消費メモリはほぼ同じそうな。
というわけで画像を1024に収める小技いろいろ
9Slice画像にする
9Sliceってなによ↓
https://helpx.adobe.com/jp/fireworks/kb/7092.html
borderになっていない画像があれば積極的にborderにしていきます
1つのborder画像の元画像は16×16程度でも十分差し支えなく使えます。このため背景やリストにテクスチャを使うのはおすすめできません
http://qiita.com/kyubuns/items/cb01f926966b51a5501c
同じ色なら自動的に9Sliceにしてアトラス面積を削減してくれる
Fill画像にする
HolizonalFill(左右反転)モードを利用します
左右対称にできそうな模様は積極的に半分に切断していきます
これFlashでもあったなつかし技や
Power of 2に準じる
大きな画像でPower of 2になっていない画像があれば
Power of 2のいずれかのサイズにするとアトラスを大幅に節約できることがあります
初歩的ながら減らせた時の面積がでかいので意外と侮れない
これが横600pxの画像のとき
Powerof2の512pxにしたらこうなる
512と600では実機でみた画像のクオリティはほとんど変わらないけど
アトラス上では使う面積がここまで変わりました。わーい
アトラスを分割する
その画面に必要ない画像まで入れる必要はないのでアトラスを機能毎に分割します。
たとえば進化ページにクエスト用の画像はいらんとですよね。
進化は進化で画像アトラスをまとめていきます。
Common+各種機能ごとのアトラスでつくるといいかんじかと〜
Commonは128か256におさまるように極力小さく作るのがオススメです
ドローコールに注意
このとき注意することとしてあまり細かく分割し過ぎると呼び出されるアトラスの枚数が増えてドローコールが増えていきます
ドローコールが増えるとこれはこれで描画が増えてメモリを食うので
適度にまとめて適度に分割することが求められます。
ドローコールの確認はここ
この値が50をこえていると実機で体感重く感じます
Single画像の見直し
いらないシングル画像を駆逐していきます。1匹…ッ残らず…!
アトラスに巨大な画像をいれるよりシングル化したほうが結果的に良いこともあります
Single画像はディザ化の効果がけっこう顕著に出るので前回の記事のこの処理はかけたほうがよいとおもいます〜
UnityのInspector設定を見直す
Clamp設定のチェック
InspectorのClamp機能で画像の最大サイズを制限することが可能です
仮に元画像が1024あってもClanpを256にするとUnity上で256以上にはならないです。べんり
しかしこれに頼りすぎると不必要に大きい画像が混ざった時に気づきにくいので
元の画像をPhotoshopで縮小したほうが負荷もかからず確実な手な気がします
描画にやさしい文字ラベル処理
Depthを統一する
ラベル要素のDepthを統一すると描画負担が抑えられるんだって
ラベルサイズの指定
仮にテキスト部分を44で指定した状態で
Shrink Contentモードでラベルのサイズを28に指定している場合
実際28のサイズを表示するために
44の描画を1度してから28に縮めることになり無駄な負荷がかかります
同じにしよう!
番外編:エンジニアさんにおねがいしよう
シェーダーの書き直し
なんだかんだ一番効くのがシェーダーです。エンジニアさんにお願いしよう!
最終的にどこで減ったのか判断すればいいの
ネイティブ開発のめんどい難しいことのひとつで
「ビルドするまで本当の容量がわからない」というのがあります
画像のサイズUnityのインスペクタの下に出る表示はあくまで目安であって本当のサイズではありません。あそこが減ってるから減量成功してるかというとそうでもないらしい。なるほど裏切りじゃねーの。
いろいろ要素が絡み合って最終の重さになるんだってさ。
とりあえずビルドサイズ50MB以内をめざしてがんばっていけばダイエット大成功といえるとおもいます(アセットバンドル除く)
新規アプリのリリースの場合は今後の追加も考えて40MB↑↓目標でしょうか。
ひぇぇ〜。たいへんだけどおたがいがんばりましょ〜