いんでぃーづ

ゲームいろいろ、いろいろ自由

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

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を使いましょう。


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。