Unityで、クローン一個一個に、それぞれ違った色を付けてみたいと思ったため、
Scriptを使って色を付けてみることにしました。
しかし、私はプログラミングもQiitaも初心者なので、色々とおかしいところがあると思いますが、
お許しください。
使用Unityバージョン
2020.3.4f1
今回の目標
下の画像のように、ランダムに色を付けれるようになる実践
まずは、クローンを作れるように、適当にキューブのプレハブを用意します。 そして、PrefabCreateというスクリプトを書いていきます。PrefabCreate.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrefabCreate : MonoBehaviour
{
[SerializeField] private GameObject cube; // プレハブのGameObject
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(cube, new Vector3((Random.value - 0.5f) * 10, (Random.value - 0.5f) * 10, 0), Quaternion.identity);
}
}
}
これに関しては適当です。今回はスペースキーを押すとキューブが生成されるようにしました。
これを適当なオブジェクトにアタッチしてあげて、CubeのところにPrefabをアタッチします。
ここからが本題です。色を変更するためのスクリプトを作ってあげます。
名前は... うーん、とりあえず適当にChangeColorとかにしておきます。
ChangeColor.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeColor : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Renderer renderer = this.gameObject.GetComponent<Renderer>();
if (renderer != null)
{
Material material = new Material(Shader.Find("Standard"));
material.color = Color.HSVToRGB(Random.value, 1f, 1f);
renderer.material = material;
}
}
// Update is called once per frame
void Update()
{
}
}
解説
まずは、Renderer renderer = this.gameObject.GetComponent();についてです。 これには、Materialをアタッチできるので、自分自身のRendererを取得しています。 次に、Material material = new Material(Shader.Find("Standard"));についてです。 これに関しては、materialをスクリプト内で作成し定義する、ということです。 Shader.Find("Standard")については、実際自分でもよくわかっていません。 下手に間違っている可能性のある情報を載せるのは良くないのでここは解説を省いていただきます。 そして、material.color = (Color型);についてです。 これはそのままで、materialの色を指定しています。 そして最後、renderer.material = material;についてです。 これはGameObjectのRendererのマテリアルのところに、materialをアタッチしているのと同じ 動作になります。 以上で解説終わりです。結果
結論
スクリプトで、このような手順を踏めばいいです。
・対象のGameObjectからRendererをGetComponentする
・Materialを定義してやる
・定義したmaterialのcolorプロパティに色情報を代入
・取得したrendererのmaterialプロパティに定義したmaterialを代入
これによってそれぞれ違った色を付けることができます。
今回の記事は以上です。お読みいただきありがとうございました。