プレーヤーに触れたオブジェクトの名前を、順番にリスト(List)に追加できる仕組みをつくってみましょう。
Cubeを操作して、複数のオブジェクトにぶつかれば、リストの中に入ります。
配列(Array)は、あらかじめ要素の数が決まっている場合、リスト(List)は要素の数が決まっていない場合に適しています。
関連記事:
【Unity C#】ぶつかったオブジェクトを順に配列に入れる
【Unity C#】リストの中のオブジェクトを表示する
【Unity C#】クリックしたオブジェクト名をリストへ追加
【Unity C#】リストの中で最後に追加された要素から削除
【Unity C#】リストを古い要素(先頭)から削除
【Unity C#】リストの中で指定した要素を削除
【Unity C#】FindObjectsOfTypeで指定したクラスを全て取得
【Unity C#】配列をすべてリストに移す
【Unity C#】指定した順序でオブジェクトを取る
触れたオブジェクトの名前を順にリストに入れる
Cubeを作成。
リジッドボディを追加し、UseGravityのチェックを外します。
わかりやすくするため、マテリアルカラーをつけました。
Sphere、Cylinder、Cupsuleを作成。
「Target」というタグを新規作成し、設定します。
それぞれコライダーで、「トリガーにする」にチェックを入れます。
3つのオブジェクトを動かして、Cubeから離して配置します。
CubeMove.csを作成し、Cubeに追加しましょう。
CubeMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public List<string> myList = new List<string>(); void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f; transform.position = new Vector3 ( transform.position.x + dx, 0, transform.position.z + dz ); } void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Target" ) { myList.Add(other.gameObject.name); other.gameObject.SetActive(false); } } } |
ゲームプレイして、Cubeを操作しましょう。
他のオブジェクトに触れると、順番にmyListの中に格納されていきます。
配列(Array)とは違い、ぶつかる相手のオブジェクト数に応じて、リストの要素の数も増えていきます。
関連記事:
【Unity C#】ぶつかったオブジェクトを順に配列に入れる
【Unity C#】リストの中のオブジェクトを表示する
【Unity C#】クリックしたオブジェクト名をリストへ追加
【Unity C#】リストの中で最後に追加された要素から削除
【Unity C#】リストを古い要素(先頭)から削除
【Unity C#】リストの中で指定した要素を削除
【Unity C#】FindObjectsOfTypeで指定したクラスを全て取得
【Unity C#】配列をすべてリストに移す
【Unity C#】指定した順序でオブジェクトを取る