Прочитать с JSON файла объекты, которые наследуются от абстрактного класса в Unity

Есть абстрактный класс EnemyAttackDATA и три дочерних класса: Bite, Fist, ZapBall

Хочу, чтобы при чтении файла JSON объект типа EnemyAttackDATA преобразовывался к нужному типу, так как происходит здесь:

EnemyAttackDATA e1 = new Bite();
Debug.Log(e1.GetType()); // Bite
e1 = new Fist();
Debug.Log(e1.GetType()); // Fist

Я использую JsonUtility

UPD: Насчет моей проблемы, то во-первых: Ни JsonUtility от Unity, ни другие классы для чтения JSON не позволяют это:

EnemyAttackDATA e = JsonUtility.FromJson<EnemyAttackDATA>(path) т.к. EnemyAttackDATA - абстрактный класс

Во-вторых мне нужно, чтобы JsonUtility сам понимал, какой класс хранится в JSON и возвращал объект типа Bite, Fist, ZapBall в зависимости от того, что хранится в JSON


Ответы (1 шт):

Автор решения: Some_ Person

Во время сериализации:

 JsonSerializerSettings settings = new JsonSerializerSettings
 {
     TypeNameHandling = TypeNameHandling.All
 };
 string tojson = JsonConvert.Serialize(json, settings);

 File.WriteAllText("file.json", json);

Теперь в файле json указан тип:

{
"$type":"Bite, Assembly CSharp",
"Coeficient":1.0,
"Name":"Bite",
"Description":"",
"TimeToActivate":0.0,
"SizeOfCollider":0.0,
"Speed":0.0
}

Во время десериализации:

EnemyAttackDATA enemy = JsonConvert.DeserializeObject<EnemyAttackDATA>(json, settings); //те же настройки
Debug.Log(enemy.GetType()); //Bite

Я использовал Newtonsoft.Json dll

→ Ссылка