Здравствуйте.
Есть такой простой пример:
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Examples
{
[CreateAssetMenu(fileName = "Enemies", menuName = "Enemies", order = 0)]
public class Enemies : ScriptableObject
{
public List<Enemy> list = new List<Enemy>();
[Serializable]
public class Enemy
{
public int id;
}
[Serializable]
public class Dragon : Enemy
{
public string name;
}
[Serializable]
public class Robot : Enemy
{
public double damage;
}
[Button]
public void AddRobot()
{
list.Add(new Robot());
}
[Button]
public void AddDragon()
{
list.Add(new Dragon());
}
}
}
Элементы, добавленные в список, отображают только id классов.
Как сделать, чтобы отображались поля наследуемых классов (урон робота и имя дракона)?
Как вариант, можно добавить атрибут [SerializeReference] к списку и он будет выводиться корректно (без Odin Inspector).
Но если используется Odin Inspector (расширение, которое позволяет очень разнообразно кастомизировать отображение объектов в инспекторе), то поля не выводятся. Хочется увидеть отображение именно в стиле Odin'a, чтобы была возможность настраивать редактор.