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には多くのメソッドがありますが、その中でも特に使用頻度が高いメソッドを3つ紹介します。
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);
}
}
}
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);
}
}
}
指定した要素が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));
}
}