1. はじめに
Listクラスは、C#で最もよく使用されるコレクション型の1つです。配列と異なり、要素数を動的に変更できる特徴があります。この記事では、Unity開発でのListクラスの基本的な使い方から、実践的な操作方法までを解説します。
2. Listの基本構造
2.1. Listの宣言と初期化
[code language="csharp"]
// 宣言
List<int> scoreList;
// 初期化
scoreList = new List<int>() { 10, 20, 30, 40, 50 };
// 宣言と初期化を1行で
List<int> scores = new List<int>() { 10, 20, 30, 40, 50 };
[/code]
2.2. インデックスによる要素アクセス
[code language=”csharp”]
// インデックスを使用した要素へのアクセス
int firstScore = scoreList[0]; // 10を取得
int lastScore = scoreList[4]; // 50を取得
3. 基本的な操作方法
3.1. 要素の挿入(Insert)
[code language="csharp"]
// 指定位置に要素を挿入
scoreList.Insert(1, 100); // インデックス1の位置に100を挿入
// 結果:[10, 100, 20, 30, 40, 50]
[/code]
3.2. 要素の削除
[code language="csharp"]
// インデックスを指定して削除
scoreList.RemoveAt(2); // インデックス2の要素を削除
// 特定の値を削除(最初に見つかった要素)
scoreList.Remove(30); // 値が30の要素を削除
// すべての要素を削除
scoreList.Clear(); // リストを空にする
[/code]

3.3. 要素の追加(Add)
[code language="csharp"]
// リストの末尾に要素を追加
scoreList.Add(60); // 末尾に60を追加
[/code]
4. よく使用される操作
4.1. 要素の検索
[code language="csharp"]
// 値の存在確認
bool exists = scoreList.Contains(30); // 30が含まれているか確認
// インデックスの取得
int index = scoreList.IndexOf(30); // 30が格納されているインデックスを取得
[/code]
4.2. リストの情報取得
[code language="csharp"]
// 要素数の取得
int count = scoreList.Count;
// リストが空かどうかの確認
bool isEmpty = scoreList.Count == 0;
[/code]
5. 実践的な使用例
5.1. ゲームスコアの管理
[code language="csharp"]
public class ScoreManager : MonoBehaviour
{
private List<int> highScores = new List<int>();
public void AddScore(int score)
{
highScores.Add(score);
highScores.Sort(); // スコアを昇順に並び替え
highScores.Reverse(); // 降順に変更
// 上位10件のみ保持
while (highScores.Count > 10)
{
highScores.RemoveAt(highScores.Count - 1);
}
}
}
[/code]
5.2. 敵キャラクターの管理
[code language="csharp"]
public class EnemyManager : MonoBehaviour
{
private List<GameObject> enemies = new List<GameObject>();
public void SpawnEnemy(GameObject enemyPrefab)
{
GameObject enemy = Instantiate(enemyPrefab);
enemies.Add(enemy);
}
public void RemoveDefeatedEnemy(GameObject enemy)
{
if (enemies.Contains(enemy))
{
enemies.Remove(enemy);
Destroy(enemy);
}
}
}
[/code]
6. List使用時の注意点
6.1. パフォーマンスに関する考慮事項
- 配列と比べて処理負荷が高い
- 要素数が固定の場合は配列を使用することを推奨
- 大量の要素の追加/削除が頻繁な場合は、他のデータ構造を検討
6.2. 推奨される使用シーン
- 動的なデータ管理
- レベル中の敵キャラクター
- プレイヤーのインベントリ
- スコアランキング
- 要素数が変動するデータ
- ゲームの進行状況によって増減する項目
- ユーザー入力に応じて変化するリスト
7. まとめ
Listクラスの主な特徴:
- 動的な要素数の変更が可能
- 豊富な操作メソッドを提供
- 型安全性を確保
- Unityでの一般的なデータ構造
使い分けのポイント:
- 要素数が固定 → 配列を使用
- 要素数が可変 → Listを使用


コメント