@Almost

Как отобразить все поля наследуемых классов с помощью Odin Inspector в Unity?

Здравствуйте.

Есть такой простой пример:

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, чтобы была возможность настраивать редактор.

5f086364de677559026136.png
  • Вопрос задан
  • 503 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы