2つのオブジェクトを着せ替える仕組みを作ります。
ヒエラルキー内のオブジェクトではなく、Prefabを使用して切り替えできるようにスクリプトを作成しましょう。
上下キーで、SphereとCapsuleのプレハブデータを入れ替えます。
オブジェクトの切り替えにPrefabを使用
SphereとCapsuleを作成し、それぞれ同名のタグをつけます。
SphereとCapsuleをプレハブデータにします。
プレハブの元データは削除します。
空のオブジェクトを作成します。
この空のオブジェクト(GameObject)が、プレハブの表示位置になります。
ChangeObject.csを作成し、GameObjectに追加します。
ChangeObject.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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ChangeObject : MonoBehaviour { private int count; [SerializeField] GameObject[] objectPrefab; void Start() { PrefabChange(); } void Update() { if (Input.GetKeyDown(KeyCode.DownArrow)) { count = 0; PrefabChange(); } if (Input.GetKeyDown(KeyCode.UpArrow)) { count = 1; PrefabChange(); } } void PrefabChange() { if(count == 0) { Instantiate(objectPrefab[0],this.transform.position,Quaternion.identity); GameObject[] destroyObj = GameObject.FindGameObjectsWithTag("Capsule"); foreach (GameObject obj in destroyObj) { Destroy(obj); } } else if(count == 1) { Instantiate(objectPrefab[1],this.transform.position,Quaternion.identity); GameObject[] destroyObj = GameObject.FindGameObjectsWithTag("Sphere"); foreach (GameObject obj in destroyObj) { Destroy(obj); } } } } |
2つのフィールドに、それぞれのプレハブデータを入れます。
ゲームプレイしてみましょう。
上下キーによる操作で、2つのPrefabが入れ替わります。
オブジェクトの入れ替えはヒエラルキー内のオブジェクトを使用する例が多いですが、以上のようにPrefabによる操作も可能です。