Prefabから作成したインスタンスのマテリアル(色)を変更するサンプル。
それぞれのインスタンスの色を変更した場合と、プレハブに使用しているマテリアルの値を変更した場合の違いをみる。
予めCubeからプレハブを作成し、Assetへ追加しておく。
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 |
using UnityEngine; using System.Collections; public class ChangeColor : MonoBehaviour { public GameObject _prefab; public Material _material; GameObject[,] _instance = new GameObject[2, 3]; void Start () { for (int j = 0; j < 2; j++) { for (int i = 0; i < 3; i++) { _instance[j, i] = Instantiate(_prefab) as GameObject; _instance[j, i].transform.localPosition = new Vector3(i * 3 - 3, j * 3 - 1.5f, 0); } } for (int i = 0; i < 3; i++) { _instance[0, i].renderer.material.color = new Color(i * 0.5f, 0.5f, 0.5f); } _material.color = new Color(1, 1, 1); } } |
24行 : インスタンスのマテリアル(色)を変更
26行 : プレハブに使用しているマテリアル(色)を変更
Hierarchyへ空のオブジェクトを作成し、上記スクリプトを追加。
InspectorパネルでChangeColor(Script)のパブリック変数の設定を行う。
1. Prefabへ複製するプレハブをAssetからDrag&Dropで設定。
2. Materialへプレハブに使用しているマテリアルをDrag&Dropで設定。
シーンをプレビューすると…
左側は上段の白いキューブ、右側は下段の右端の赤いキューブのInspectorパネルのMesh Rendererの状態です。
色を変更したキューブはマテリアルがCube(Instance)となりインスタンス化されたマテリアルが設定される。色を変更した後で、プレハブに使用しているマテリアルを変更しても影響をうけない。
色を変更していないキューブにはオリジナルのマテリアルが設定されたまま。プレハブに使用しているマテリアルを変更すると影響を受ける。
[…] インスタンスのマテリアルを変更する | naru design devlog […]