LoginSignup
5
6

More than 5 years have passed since last update.

Unity 2Dゲームにおけるテクスチャの設定

Last updated at Posted at 2018-10-27

スクリーンショット 2018-10-27 14.58.11.png

スマホゲーなど2Dゲームの場合に、どのような設定が最適か?
学んだことを下記にまとめます。


TextureType

Texture Typeは、このテクスチャが何に使用されるのかで選択します。テクスチャインポーターの他のプロパティーは、この選択によって変化します。

Texture TypeをAdvance にすると、全部設定できるオプションが表示されます。Advance以外のTypeだと、そのTypeに最も関連する設定しか表示されません。

GenerateMipMaps

Generate Mip Mapsとは?
Unityスクリプトリファレンスによれば、

有効の場合、色が下位のミップレベルの端ににじみ出ることがなくなります。ライト cookie に使用します

...簡単に説明すると、カメラとの距離が離れて小さく描画する必要がある際に、ミップマップの中から適切なサイズのテクスチャを選んで描画する、といったもののようです。リストを保持しておくためにメモリ使用量は増えますが、描画の際に小さなサイズを描画させることが出来るのでパフォーマンスが良くなるということ。

3Dゲームでは役立つでしょうが、2Dゲームではこの設定はオフにしましょう。ちなみに、Unity5.3.8ではデフォルトで設定がオンです。確認しましょう。

Aniso Level

引用:Unityスクリプトリファレンス

急な角度から眺めたときのテクスチャ品質を向上させます。床や地面のテクスチャに適しています。

2Dゲームの場合、カメラに対して平行にしか配置しない筈なので、これも最低設定の0でいいでしょう。

フォーマットについて

スクリーンショット 2018-10-27 15.23.50.png

2Dゲームに使われる素材の中にTextureが占める割合は多いことでしょう。そしてメモリーサイズもそれに比例してるので、ゲーム開発には Texture Format は重要なポイントの一つと考えられます。画面に映るものの画質とメモリサイズとパーフォマンス、この3つのバランスが得られるために適切な Texture Format を選ばないといけません。

基本的にはCompressed, 16 Bits, True Color の3種類に分けられます。

Compressedフォーマット

Compressed Texture Formats はPlatformやハードウェアーによって異なります。画像フォーマット(JPG, PNGなど)と違って (lossy又はlossless)、ファイルサイズを小さくするため、ここの圧縮フォーマットは必ず lossyで、メモリ上でのサイズを圧縮するフォーマットです。

  • ETC (Ericsson Texture Compression)
    全てのAndroid機種が対応できるフォーマット。
  • PVRTC (PowerVR texture compression)
    iOS全機種が対応できるフォーマットです。Android機種の場合はPowerVR GPUを使ってる機種しかこのフォーマット使えません (Nexus S, Kindle fireなど)。
  • ATC (ATI texture compression)
    Qualcomm Adreno GPUを使ってるAndroid機種しかこのフォーマット使えません
  • DXTC (S3TC, S3 Texture Compression)
    PCはサポートしますが、モバイルだとNvidia Tegra のGPUしかサポートしません

→スマホゲーはアイフォン、アンドロイド両方向けで製作することが多いことから、採用はしづらいでしょう?

16 Bitsフォーマット

このモードではピクセルの色が 16-bit の color spaceにmappingされます。Alphaがついてる場合 (RGBA)、それぞれのチャネルが 4-bit (RGBA4444 = 16-bits)になりますが、Alphaなしだと、RとBチャネルが5-bits、Gチャネルが 6-bits (RGB565 = 16-bits) になります。

→透明な画像を使わない場合、RGB使えばいいってことですね!?

16-Bitsモードは色数がかなり減るので、単色塗りつぶし系の画像に適していますが、グラデーションなど色が滑らかに変わる画像では color bandingという現象が発生します。色が滑らかに変わるような画像で使う場合、事前にディザリング(誤差拡散)を使って色数を落としてからUnityにインポートすることでだいぶ実用的になります。

→画像が荒くなっても誤差拡散使えば大丈夫!?

フルカラー画像(32bit RGBA8888)と、Unityと同じ方法で16bitカラーに変換した画像(16bit RGBA4444)を横並びにすると明確ですね。

誤差拡散を使った16bitカラー画像(16bit RGBA4444)
image.png

True Colorフォーマット

True Color Mode はもとの画像の画質はそのままで texture をインポートします。このModeは画質は一番良いが、*Memoryサイズは他のtexture formatより一番でかいです。 *

参考

・ Unityで、もっとキレイな16bitカラーテクスチャを使おう!
【Unity】Texture Format

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6