こんにちわ、Unityエンジニアのオオバです。

Unityの画像サイズに迷ったことはありませんか?
「4の倍数にしておいてください」
とエンジニアに言われて、

「はい、わかりました」
と言いつつ、その理由を完全理解している
UIデザイナーは少ないような気がします。

ただ、理解しておく必要は全くありませんし、
仕事も滞りなく進みます。

しかし すべての画像は4の倍数でなくても良い ですし、
無理に4の倍数にして画像サイズを大きくするのが良くないパターンもあります。

本記事は、Unityを使うスマホ向けUIデザイナーに送ります。
Unityであつかう画像の適切なサイズ について
わかりやすく解説しました。

画像サイズに自信ないよ、
という方に読んでもらいたいです。

アトラス内の画像は自由、それ以外は4の倍数

結論を簡単にまとめます。

アトラス内の画像は自由、それ以外は4の倍数
に設定すれば大丈夫です。

そもそも「アトラス」の意味が分からない方は
ぜひ読んでみてください。

ここから詳細解説に入ります。

この記事の内容

適切な画像サイズがメモリ使用量を抑える

メモリとはアプリ起動時に使用する容量のこと。
Android向けスマホゲームであれば、

これらの合計が、スマホ全体のメモリ量を越えてはいけません。
越えそうな場合はOSによって強制的にアプリが停止させられます。

オオバ
オオバ
メモリは有限ですからね。

つまり メモリ使用量は低いほうが良い のです。

画像サイズの指定でメモリ使用量が爆増する

スマホゲームにとって最もメモリを使用するのは 大量の画像
画像はGPUとよばれる場所で処理されます。

GPUに対応したフォーマットにすることで、
大きくメモリ使用量を下げる ことが可能です。

ここでいうフォーマットというのは、
画像形式のことで、一般的なものを取り上げると
「png」や「jpg」です。

Unityの場合、画像は自動的にインポートされます。
つまりUnityの中では「png」や「jpg」ではないということ。
「圧縮テクスチャ」とも呼ばれます。

圧縮テクスチャの制限の1つが 画像のサイズ指定 です。

よくあるのが2の累乗サイズにするというもの。
例 : 1辺128pxといった感じ

しかし最近のスマホでは2の累乗指定は撤廃され、
4の倍数 でも大丈夫です。

例 : 1辺132pxのような
(※圧縮テクスチャの種類に依って変わります)

この制限からはずれてしまうと、
非圧縮状態になります。

つまり メモリ使用量が爆増 するのです。

アトラスにパックした画像サイズは自由

UI開発でよく使用されるアトラス。
アトラスに含める画像サイズは自由 です。

Unityであつかう画像サイズのすべてを4の倍数にする必要はない_0

つまり、 幅103px、高さ114pxのような
中途半端な画像サイズでもOK

よくアトラス内の画像も4の倍数や2の累乗で
納品する方がいらっしゃいますが不要です。

できる限り小さい画像にしてもらう方がアプリ的にはエコ。

アトラスは複数の画像を1枚にパックした画像

なぜアトラス内の画像サイズは自由なのかというと、
アトラスとは複数の画像を1枚にパックした画像 だからです。

アトラス自体のサイズは、4の倍数にしましょう。

Unityであつかう画像サイズのすべてを4の倍数にする必要はない_1

👆こちらはSpriteAtlasというUnity製のアトラス機能です。
4の倍数以外のサイズは指定できないようになっています。

このように、アトラスに含まれる画像は4の倍数という概念は不要です。
とにかく小さくして納品しましょう。

アトラス外の画像は1辺4の倍数にする

アトラスに含めない画像は 1辺4の倍数 にしておくと良いです。
各辺ごとに別々のサイズでも大丈夫。

などなど。

UI画像の場合アトラス以外で使うことはほとんどありません。
よくあるのが、キャラクタのズーム画像や背景といった1枚絵の表示。

こういった一枚の画像で表示するパターンのときは
4の倍数にしておくと良いでしょう。

スマホ対応に加えてPC対応するとき注意

プラットフォームごとにGPUは違います。
つまりスマホとPCだとまた対応フォーマットが違うのです。

ASTCの場合、画像サイズは自由です。
しかしDXT5の場合は各辺のサイズは4の倍数である必要があるのです。

実はスマホ向け開発だけで考えれば
アトラス外の画像も自由なサイズで良いです。
しかし、PC向けも開発していく場合は、
画像サイズに制限が生まれます。

この辺りプロジェクトの開始時には読めない部分です。

将来的なことを考えて、
4の倍数にしておくことをオススメ
します。

まとめ : Unityであつかう画像サイズはすべて4の倍数にする必要はない

記事の内容を簡単にまとめます。

こんな感じです。

専門的な話は抜きにして、
とりあえず 4の倍数を意識しておけば大丈夫 です。

インターネットで検索すると、
2の累乗にしておく必要があるといった内容も出てくるかと思います。
すこし情報が古い です。

2021年末現在(執筆時)では、
進化したGPUを搭載したスマホが世の中に普及しているため、
4の倍数にしておけば間違いないでしょう。

ただし、あくまでそれは日本の話。
海外向けにリリースする場合は別途端末情報を
チェックしておいたほうが良いです。

オオバはあまり海外事情に詳しくないので調査は必要ですが、
すごーく古い端末のシェア率が高い場合、
その端末に見合ったフォーマットに合わせる必要が出てきます。

海外対応する場合は、
そのあたり事前調査が必要そうですね。


フォローすると UIデザイナー力の上がるTwitter やってます!
今日から使えるテクニックを発信中。
ぜひフォローしてみてください!
👉フォローはこちら!

最後まで読んでいただきありがとうございました!
すばらしいUnityライフをお過ごしください。

オススメ記事
検証環境