[Unity入門] Listの使い方を分かりやすく解説!配列との違いや便利なメソッドも紹介

(2024/09/08)

開発環境
  • Unityのバージョン:2022.3.32f1
  • Listとは?配列とListの違い

    Listと配列も、複数のゲームオブジェクトや、複数の数値などを管理するために使いますが、Listは配列と違い動的に要素数を変更することができます。 例えば、ゲーム中に敵の数が増減する場合の敵の管理などは配列ではなくListを使うのが適しています。

    Listの使い方

    Listを使うにはまず、Listの宣言を行う必要があります。

    using System.Collections.Generic; // List を使うために必要な名前空間
    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        // Listの宣言
        public List<int> numbers = new List<int>(); // int型のデータを格納するList
    }
    
    
    

    Listは、宣言と同時に要素を追加することができます。

    List numbers = new List() { 1, 2, 3 }; // Listの宣言し、要素 1, 2, 3 を追加
    

    宣言したListに要素を追加するにはAdd()を使います。

    numbers.Add(2);  // numbersというListにint型の整数2を追加する
    numbers.Add(5);  // numbersというListにint型の整数5を追加する
    numbers.Add(10); // numbersというListにint型の整数10を追加する
    

    Listから要素を削除するには、Remove()を使います。

    numbers.Remove(5); // numbersというListから5を削除する
    

    またListも配列と同じようにforeachを使うことが出来ます。

    using System.Collections.Generic; // List を使うために必要な名前空間
    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        // Listの宣言
        public List<int> numbers = new List<int>(); // int 型のデータを格納する List
    
        void Start()
        {
            numbers.Add(2); // numbersというListにint型の整数2を追加する
            numbers.Add(5); // numbersというListにint型の整数5を追加する
            numbers.Add(10); // numbersというListにint型の整数10を追加する
    
            numbers.Remove(5); // numbersというListから5を削除する
    
            // foreachを使ってListの要素をDebug.Logでコンソールに出力
            foreach (int number in numbers)
            {
                Debug.Log(number);
            }
        }
    }
    

    上記のコードを実行すると、コンソールに2と10が表示されます。

    Listにある便利なメソッド

    Listには多くのメソッドがありますが、その中でも特に使用頻度が高いメソッドを3つ紹介します。

    ・Sort()

    Listの要素を昇順にソートします。下のコードを実行するとコンソールに1,3,4,5,9の順番で出力されます。

    using System.Collections.Generic;
    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        // Listの宣言
        List<int> numbers = new List<int>() { 3, 1, 4, 9, 5 };
    
        void Start()
        {
            // Sort()を使い、Listの要素を昇順にする
            numbers.Sort();
    
            foreach (int number in numbers)
            {
                Debug.Log(number);
            }
        }
    }
    
    ・Clear()

    Listのすべての要素を削除します。下のコードを実行するとコンソールに"いちご"が出力されます。

    using System.Collections.Generic;
    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        // Listの宣言
        List<string> fruits = new List<string>() { "みかん", "りんご", "ぶどう" };
    
        void Start()
        {
            // Clear()を使い、Listのすべての要素を削除する
            fruits.Clear();
    
            // Add()を使い、要素を追加する
            fruits.Add("いちご");
    
            foreach (string fruit in fruits)
            {
                Debug.Log(fruit);
            }
        }
    }
    
    ・Contains()

    指定した要素がListに含まれているかどうかを判定します。指定した要素が含まれている場合はtrue、含まれていない場合はfalseを返します。
    下のコードを実行するとコンソールにtrueが出力されます。

    using System.Collections.Generic;
    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        // Listの宣言
        List<int> numbers = new List<int>() { 1, 2, 3 };
    
        void Start()
        {
            // Contains()を使い、Listに2が含まれているか判定する
            Debug.Log(numbers.Contains(2));
        }
    }