いいえ、Unity はポリモーフィック シリアライゼーションを直接サポートしていません。
この機能を必要としない代替設計を見つける必要があります。タイプごとに個別のリストを保持することは、1 つのオプションです。
class MyStuff
{
public List<Class1> Class1List;
public List<Class2> Class2List;
}
タイプのリストをより簡単に選択するためのラッパー メソッドを作成できます。
List<Type> GetList<Type>()
{
var type = typeof(Type);
if (type == typeof(Class1))
return Class1List;
else if (type == typeof(Class2))
return Class2List;
else
return null;
}
各アイテムを順番に反復する iterate を書くことができます。これらのプラットフォームでゲームを作成した経験から、GCes (Unity、HTML5 など) を使用したゲームで回避するよう努めるべきであるガベージがイテレータの構築によって作成されるため、これは悪い考えです。
Unity のバージョンの Mono にジェネレーターがあるかどうかは覚えていませんが、ある場合は次のことができます。
IEnumerable<Object> All()
{
foreach (var i : Class1List)
yield return i;
foreach (var i : Class2List)
yield return i;
}
ジェネレーターがないと、コードは少し見にくくなります (独自の状態を維持する必要があります) が、実行可能です。そのコードは自分で思いつくことができるはずです。ゲームのようなソフト リアルタイム アプリでは、ガベージ コレクターのスパイクが非常に現実的な問題を引き起こす可能性があるため、これがプレイ中に行われることを意図している場合は、ゲームでそのようなアプローチをしないことをお勧めします。