リストに入ったオブジェクトを、要素の番号(インデックス)で指定して、削除できるしくみを作りましょう。
クリックして、オブジェクトをリストに入れます。
0~5の数字キーを押せば、その番号の要素が消えていきます。
関連記事:
リストの中で最後に追加された要素から削除
リストを古い要素(先頭)から削除
ぶつかったオブジェクトをリストに追加する
配列をすべてリストに移す
触れたオブジェクト(複数)をn秒後に全削除
リストの中が0になるまで生成する
リストのサイズ(長さ)を取得
リスト内のPrefabを表示
番号キーに該当する要素を消す
オブジェクトをいくつか作成します。
間隔をあけてオブジェクトを配置します。
空のオブジェクトを作成します。
ListControl.csを作成し、GameObjectに追加します。
ListControl.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ListControl : MonoBehaviour { public List<GameObject> myList = new List<GameObject>(); void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(ray, out hit)) { myList.Add(hit.collider.gameObject); } } if (Input.GetKeyDown (KeyCode.Alpha0)) { myList.RemoveAt(0); } if (Input.GetKeyDown (KeyCode.Alpha1)) { myList.RemoveAt(1); } if (Input.GetKeyDown (KeyCode.Alpha2)) { myList.RemoveAt(2); } if (Input.GetKeyDown (KeyCode.Alpha3)) { myList.RemoveAt(3); } if (Input.GetKeyDown (KeyCode.Alpha4)) { myList.RemoveAt(4); } if (Input.GetKeyDown (KeyCode.Alpha5)) { myList.RemoveAt(5); } } } |
今回は、0~5までのキーに対して、それぞれ該当する番号の要素を割り当てました。
RemoveAtを使用し、要素番号を指定して削除します。
ゲームプレイしてみましょう。
まずはクリックして、オブジェクトをリストに追加。
0~5のキーを押せば、要素0~5の該当番号が消えます。
関連記事:
リストの中で最後に追加された要素から削除
リストを古い要素(先頭)から削除
ぶつかったオブジェクトをリストに追加する
配列をすべてリストに移す
触れたオブジェクト(複数)をn秒後に全削除
リストの中が0になるまで生成する
リストのサイズ(長さ)を取得
リスト内のPrefabを表示