
Unity や C# でスクリプトを書いていると、次のようなエラーが突然出ることがあります。
Assets\Scripts\abcdef.cs(282,16):
error CS0246: The type or namespace name 'List<>' could not be found
(are you missing a using directive or an assembly reference?)
実はこのエラー、とてもシンプルな原因で発生します。
✔ エラーの原因
このエラーは、
List<> クラスを使うための using が不足している
ことが原因です。
C# の List<T> は System.Collections.Generic 名前空間に属しているので、
これを using として読み込んでいないとコンパイラが型を認識できず、
CS0246 エラーが発生します。
✔ 解決方法(最も一般的なパターン)
ファイルの先頭の using の部分に、次の1行を追加します。
using System.Collections.Generic;
追加したあとに Unity が自動コンパイルすれば、エラーは解消されます。
🔍 それでも直らないときのチェックポイント
まれに、using を書いてもエラーが消えないケースがあります。
その場合は次の点も確認しましょう。
1. List<> の型パラメータが抜けている
例:
List items; // ❌ NG:型パラメータが必要
List<int> items; // ✔ OK
List<string> names; // ✔ OK
List<MyClass> objects; // ✔ OK
2. 自作クラス名が List と衝突している
もし自分のプロジェクト内に List.cs というスクリプトがあると、
C# の既存の List<T> と名前が衝突し、エラーが出る場合があります。
→ その場合は、自作クラスの名前を変更するのが良いです。
3. using の書き忘れが別ファイルにある
List を使っているファイルの方にも、
同じく using が必要です。
例:A.cs で using を書いていても、B.cs で List を使うなら B.cs にも必要です。
✔ まとめ
-
List<>が見つからないエラー(CS0246)は using の不足が主な原因 -
対処法はとても簡単
→using System.Collections.Generic;を先頭に追加するだけ -
まれに「型パラメータ抜け」「クラス名衝突」なども原因になる
Unity の開発では List を使う場面が多いので、このトラブルに遭遇しやすいですが、
原因さえ分かっていればすぐに対処できるエラーです。