生成したPrefabに対して、順にタグを付けられるように、スクリプトを作成しましょう。
今回の例では、出現したプレハブに、Ball1~3のタグを順繰りで付けていきます。
プレハブに動的にタグを付ける
あらかじめ、Ball1~Ball3までのタグを用意します。
空のオブジェクトを作成します。
SpawnScript.csを作成し、GameObject(空のオブジェクト)に追加します。
SpawnScript.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnScript : MonoBehaviour { public GameObject prefab; private Vector3 mousePosition; public static SpawnScript instance; public int ballNumber; public void Awake() { if(instance == null) { instance = this; } } void Update() { if (Input.GetMouseButtonDown(0)) { ballNumber++; mousePosition = Input.mousePosition; mousePosition.z = 10.0f; Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity); } } } |
Sphereを作成します。
TagScript.csを作成し、Sphereに追加します。
TagScript.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TagScript : MonoBehaviour { public int myNumber; void Start() { myNumber = SpawnScript.instance.ballNumber; if(myNumber % 3 == 1) { this.gameObject.tag = "Ball1"; } else if(myNumber % 3 == 2) { this.gameObject.tag = "Ball2"; } else { this.gameObject.tag = "Ball3"; } } } |
プロジェクトビューにドラッグ&ドロップして、Prefab化します。
Sphereの元データは削除しておきます。
プレハブのフィールドに、Sphereを入れます。
ゲームプレイして、画面をクリック。
Sphereが生成されるたびに、Ball1~3のタグが順繰りで付与されます。