複数のマテリアルを、スクリプトから切り替えて、オブジェクトの色を変化させてみましょう。
左右キーを使って、3つのマテリアルを順に入れ変えるしくみを作成します。
関連記事:
他のマテリアルを変数として取得する
Rayを使ってマテリアルカラーを取得
画像データをMaterialとして扱う方法
ゆっくり元のカラーに戻す
他のスクリプトから透明化させる
クリックするたびに画像を切り替える
取れば次のオブジェクトが出現する
3つのマテリアルを順に入れ替える
三色のマテリアルデータを作成します。
Cubeオブジェクトを作成します。
ChangeMaterial.csを作成し、Cubeに追加します。
ChangeMaterial.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ChangeMaterial : MonoBehaviour { [SerializeField] Material[] materialArray = new Material[3]; Material cubeMaterial; private int count; void Start() { count=0; } void Update() { if (Input.GetKeyDown(KeyCode.RightArrow)) { count++; if(count > materialArray.Length-1) count = 0; GetComponent<MeshRenderer>().material = materialArray[count]; } if (Input.GetKeyDown(KeyCode.LeftArrow)) { count--; if(count < 0) count = materialArray.Length-1; GetComponent<MeshRenderer>().material = materialArray[count]; } } } |
MaterialArrayの要素0~2に、3つのマテリアルを入れます。
ゲームプレイして、左右キーを押してみましょう。
三色のマテリアルが、順に切り替わっていきます。
Material型で、配列変数のmaterialArrayを作成し、3つの要素を入れられるようにしています。
配列内のマテリアル切り替えは、countで行います。
今回は3つのマテリアルを順繰りで動かしたいので、countが2を上回ったときは0に、0を下回ったときは2になるように、条件を追加しています。
関連記事:
他のマテリアルを変数として取得する
Rayを使ってマテリアルカラーを取得
画像データをMaterialとして扱う方法
ゆっくり元のカラーに戻す
他のスクリプトから透明化させる
クリックするたびに画像を切り替える
取れば次のオブジェクトが出現する