プレーヤーに触れたオブジェクトの名前を、順番にリスト(List)に追加できる仕組みをつくってみましょう。
Cubeを操作して、複数のオブジェクトにぶつかれば、リストの中に入ります。
配列(Array)は、あらかじめ要素の数が決まっている場合、リスト(List)は要素の数が決まっていない場合に適しています。
関連記事:
ぶつかったオブジェクトを順に配列に入れる
リストの中のオブジェクトを表示する
クリックしたオブジェクト名をリストへ追加
リストの中で最後に追加された要素から削除
リストを古い要素(先頭)から削除
リストの中で指定した要素を削除
FindObjectsOfTypeで指定したクラスを全て取得
配列をすべてリストに移す
指定した順序でオブジェクトを取る
リストのサイズ(長さ)を取得
リストの中をすべて表示・非表示
触れたオブジェクトの名前を順にリストに入れる
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)とは違い、ぶつかる相手のオブジェクト数に応じて、リストの要素の数も増えていきます。
関連記事:
ぶつかったオブジェクトを順に配列に入れる
リストの中のオブジェクトを表示する
クリックしたオブジェクト名をリストへ追加
リストの中で最後に追加された要素から削除
リストを古い要素(先頭)から削除
リストの中で指定した要素を削除
FindObjectsOfTypeで指定したクラスを全て取得
配列をすべてリストに移す
指定した順序でオブジェクトを取る
リストのサイズ(長さ)を取得
リストの中をすべて表示・非表示