Отображение поля ScriptableObject в Custom Inspector’е некоторого компонента
Предположим, у нас есть некоторый класс унаследованный от MonoBehaviour, назовём его SODataBehaviour.
using UnityEngine; namespace Triks.SO { public class SODataBehaviour : MonoBehaviour { /// <summary> /// Экземпляр класса SOData /// </summary> [SerializeField, Tooltip("Экземпляр класса SOData")] private SOData scriptableObjectData; /// <summary> /// Поле типа int /// </summary> [SerializeField, Tooltip("Поле типа int")] private int someInt = 5; } }
В нём есть поле, тип которого — класс унаследованный от ScriptableObject, его мы назовём SOData.
using UnityEngine; namespace Triks.SO { /// <summary> /// Класс характеризующий /// </summary> [CreateAssetMenu(menuName = "Triks/SO Data")] public class SOData : ScriptableObject { /// <summary> /// Скорость передвижения /// </summary> [SerializeField, Range(1, 15), Tooltip("Скорость передвижения")] private float speed = 1; /// <summary> /// Возвращает скорость передвижения /// </summary> public float Speed { get { return speed; } } /// <summary> /// Урон наносимый от контакта /// </summary> [SerializeField, Range(0.1f, 50), Tooltip("Урон наносимый от контакта")] private float contactDamage = 10; /// <summary> /// Возвращает урон наносимый от контакта /// </summary> public float ContactDamage { get { return contactDamage; } } /// <summary> /// Описание данных /// </summary> [SerializeField, Tooltip("Описание данных")] private string description; /// <summary> /// Возвращает описание данных /// </summary> public string Description { get { return description; } } } }
По умолчанию в инспекторе это будет выглядеть так: