タグを付けたオブジェクトを生成し、タグごとに集計できるしくみを作りましょう。
今回は、キューブ、スフィア、シリンダーの3種類をクリックでランダム生成。
種類ごとにカウントして、テキストで表示します。
関連記事:同じタグのついたオブジェクトだけを消す
タグの追加とPrefab作成
Cube、Sphere、Cylinderを作成します。
Cube、Sphere、Cylinderの名前でタグを作成し、各オブジェクトに設定します。
プロジェクトビューにドラッグ&ドロップし、それぞれPrefab化します。
元データは削除しておきましょう。
テキストの作成
3つのテキストを作成します。
名前をそろぞれCubeText、SphereText、CylinderTextにしました。
テキストの内容を書き変え、色、サイズ、位置を調整します。
タグを数えるスクリプト
空のオブジェクトを作成します。
GameManager.csを作成し、GameObjectに追加します。
GameManager.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { private Vector3 mousePosition; private int count; public GameObject[] prefabArray; public Text cubeCountText; public Text cylinderCountText; public Text sphereCountText; void Update() { if (Input.GetMouseButtonDown(0)) { count = Random.Range (0, prefabArray.Length); mousePosition = Input.mousePosition; mousePosition.z = 10.0f; Instantiate(prefabArray[count], Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity); } GameObject[] cubeObjects = GameObject.FindGameObjectsWithTag("Cube"); GameObject[] cylinderObjects = GameObject.FindGameObjectsWithTag("Cylinder"); GameObject[] sphereObjects = GameObject.FindGameObjectsWithTag("Sphere"); cubeCountText.text = "キューブ: " + cubeObjects.Length.ToString(); cylinderCountText.text = "シリンダー: " + cylinderObjects.Length.ToString(); sphereCountText.text = "スフィア: " + sphereObjects.Length.ToString(); } } |
PrefabArrayという項目を展開すると、サイズのフィールドが出来ています。
ここに3を入力すると、要素0~3が出来ます。
それぞれのPrefabデータを入れましょう。
要素0~3のオブジェクトが、ランダムで生成されるようになります。
続いて、3つのテキストをフィールドに入れます。
ゲームプレイしてみましょう。
クリックで、3種類のオブジェクトをランダム生成。
タグ(種類)ごとに、出現した数をカウントして、テキストで表示します。
関連記事:同じタグのついたオブジェクトだけを消す