読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU
{スポンサーリンク}

Unity : Image と RawImage は何が違うのか

Tips Unity

GUIで画像を貼り付けたい時、ImageコンポーネントとRawImageコンポーネントでどっちを使うか迷ったりしませんか?

無駄に悩む事がないよう、しっかり違いを把握しておきましょう。

Imageのメリット

Imageコンポーネントでは画像ファイルにスプライトを使います。 スプライトとは、画像のアセットのTexture TypeをSprite (2D and UI)にしてあるものです。

f:id:sugar_affordance:20160630232725p:plain:w400

Packingできる

スプライト画像を使うメリットは、何と言ってもパッキングできることです。

スプライトパッカーを使って何枚かのスプライトを一枚にまとめて(アトラス化)しまえば、ドローコールを削減することができます。

一画面にあるImageコンポーネントのスプライトを全部パッキングしてしまえば、ドローコール1でまとめて表示することも可能です。

タイリングできる

ImageコンポーネントのImageTypeをTiledにすると、Imageのサイズを変更することで同じ画像を何枚でも並べることができます。

f:id:sugar_affordance:20160630233127g:plain

RawImageのメリット

RawImageコンポーネントを使用するには、画像のアセットのTexture TypeをTextureもしくはAdvancedにします。

f:id:sugar_affordance:20160630232722p:plain:w400

ゲーム中に作成、取得した画像を表示できる

RawImageに設定するTextureというクラスはとても柔軟で、プログラム中で容易に作成したり内容を変更することができます。(もちろん画像の知識は必要ですが)

また、ネットワークから取得した画像の表示なども簡単です。

極端な話、画像アセットを用意しなくても、プログラムだけでRawImageに画像を表示できます。

publicclassSetImage : MonoBehaviour {

  [SerializeField]
  RawImage img;

  void Start () {

    // Texture クラスの子クラスを使ってテクスチャを作成
    Texture2D tex = newTexture2D (256256, TextureFormat.ARGB32, false);

    img.texture = tex;

  }


  IEnumerator GetNetworkImage() {

    // ネットワークから取得した画像をRawImageに表示する

    string url = "";
    WWW www = newWWW(url);
    yieldreturn www;

    img.texture = www.textureNonReadable;

  }
}

使い分け

普段使いならImageで足ります。

どうしてもテクスチャの中身をいじりたい、ネットワークからの画像を表示したい、というときはRawImageを使いましょう。

Amazon.co.jpアソシエイト