ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Unity】備忘録#2 オブジェクトの色や画像表示について

今回はUnityにおけるオブジェクトの色の情報を管理しているMaterialについてです。

オブジェクトの色変更のやり方や任意の画像をオブジェクトに表示させる方法についてまとめていきます。

■色について
1:オブジェクトのRenderer(Spriteの場合はSpriteRenderer)を取得する
2:以下のように取得したRendererのMaterialからColorを取得できるので値を再設定する
float値で0f〜1fの値を取るため0〜255で表現するにはx/255fという形で記述する)

// Spriteの場合はGetComponent<SpriteRenderer>
Renderer renderer = this.GetComponent<Renderer> ();

Color color = renderer.material.color;
color.r = 1.0f;  // RGBのR(赤)値
color.g = 1.0f; // RGBのG(緑)値
color.b = 1.0f; // RGBのB(青)値
color.a = 1.0f;// RGBのアルファ値(透明度の値)

renderer.material.color = color; // 変更した色情報に変更

ちなみに
Colorクラスのr, g, b, aの各値はfloatの0f〜1fの値しか取ることができない仕様となっているため、
Unity画面で設定する0〜255の値で設定したい場合はx/255fという形で記述する必要があります。

// 例
color.r = 120/255f;


■画像表示について
Unityの画面で直接画像をオブジェクトにドラッグさせて表示することもできますが、
スクリプトから設定する方法を紹介します。

1:設定したい画像のTextureを準備しておく(この方法は後日)
2:オブジェクトのRenderer(Spriteの場合はSpriteRenderer)を取得する
3:以下のように取得したRendererのMaterialのmainTextureに準備したTextureを設定する

// 設定したい画像のTextureを準備
Texture texture = hogehoge;

// Spriteの場合はGetComponent<SpriteRenderer>
Renderer renderer = this.GetComponent<Renderer> ();

renderer.material.mainTexture = texture; // 画像を設定

この方法でオブジェクトの色変更や画像の張り付けを行うことができます。