Отображение поля 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; }
}
}
}
По умолчанию в инспекторе это будет выглядеть так:
