【Unity】GameObjectの色を変更する方法


今月のUnity新着記事
【知ってると役に立つ】UnityのUpdate内で1回だけ実行したい処理の書き方
【知ってると役に立つ】Unityでシーンの切り替えを検出するイベントの使い方
【使ってみよう!】Unity2Dでクリックした方向に弾を飛ばすサンプル
【Unity】unitypackage(Custom Package)の作り方

UnityでGameObjectの色を変更する方法


Unity Material Red

UnityでGameObjectの色を変更する方法を紹介します。

それでは見てきましょう!

方法その1 Materialを作成・適用して色を変更する方法


Materialの作成
Projectビュー → Create → Material から、Materialファイルを作成。
ファイル名は色名とか、用途とか、わかりやすいものが良いですね。
マテリアルの色はAlbedoからカラーパレットで設定。Aは透明度。
Albedo

Materialの適用
GameObjectにドーン!と”ドラッグ&ドロップでアタッチ”するだけでOK

補足
こんな感じでシーンで使いたい色のマテリアルを作成して、適用するだけです。
他のオブジェクトに同じ色を設定したければ、マテリアルの使いまわしで演算負荷を軽減できますよ!

方法その2 スクリプトからMaterialの色を変更する方法


マテリアルの色はスクリプトから変更することができます。
Rendererコンポーネント経由でマテリアルのカラーを直接変更するという具合です。
デフォルトマテリアル、作ったマテリアル、どちらでも行えます。

	// 赤色に変更する
	gameObject.GetComponent<Renderer>().material.color = Color.red;
 

Colorクラスにはredやblueなどのメジャーな色がプリセットされています。
細かい色であればColorクラスのインスタンスで生成することができます↓

	// 黄緑色に変更する
	gameObject.GetComponent<Renderer>().material.color = new Color(173, 255, 47);
 

補足
あくまでこういうことが出来るよ!という話でして、実際にはマテリアルを作成しておき、プログラムからマテリアルを付け替えるという処理にする方が拡張性・保守性が高いでしょう↓
色を調整するだけなのにプログラムを修正する必要があるのは好ましくないですしね。

	
	public Material material;
	void Start () {
		// マテリアルの付け替え
		clickedGameObject.GetComponent<Renderer>().material = this.material;
	}

Materialについて


Materialについて少しだけ進んだ解説です。

実はCubeやShpereのような3DオブジェクトにはDefault-Material(デフォルトマテリアル)という基本設定が存在します。Cubeを作ると最初から色が白っぽいのはこのデフォルトマテリアルの影響です。
そして、マテリアルが紐づいているのは Mesh RendererコンポーネントのMaterials項目です。
オブジェクトにドラッグ&ドロップでマテリアルを適用することと、この項目に適用することは同義です。
なおここは配列になっており、要素数(Size)を増やして複数のマテリアルを適用することも可能です。

Mesh Renderer
/ 予めDefault-Materialが適用されているね \

ちなみに、オブジェクトからマテリアルの情報が完全に欠落すると、ピンク色になります。
あの有名な市街地データアセット「オタクシティ」を新しめのUnityに入れたりするとよく見るやつですね。
None (Material)
/ 恐怖のピンク \

できれば見たくないですが笑

以上です。

今月のUnity新着記事
【知ってると役に立つ】UnityのUpdate内で1回だけ実行したい処理の書き方
【知ってると役に立つ】Unityでシーンの切り替えを検出するイベントの使い方
【使ってみよう!】Unity2Dでクリックした方向に弾を飛ばすサンプル
【Unity】unitypackage(Custom Package)の作り方
  • このエントリーをはてなブックマークに追加

PAGE TOP