Для этого У меня есть базовый класс MovementPattern, который выглядит следующим образом
Код: Выделить всё
[RequireComponent(typeof(Rigidbody2D))]
public class MovementPattern : MonoBehaviour
{
protected Rigidbody2D rb;
protected MovementPatternData movementPatternData;
protected virtual void Awake()
{
rb = GetComponent();
}
public virtual void SetMovementPatternData(MovementPatternData newMovementPatternData)
{
movementPatternData = newMovementPatternData;
}
public virtual MovementPatternData GetMovementPatternData()
{
return movementPatternData;
}
}
Код: Выделить всё
[Serializable]
public class MovementPatternData : ScriptableObject
{
}
[Serializable]
public class SinusMovementPatternData : MovementPatternData
{
[SerializeField]
public float amplitude = 1f;
[SerializeField]
public float frequency = 1f;
[SerializeField]
public Vector2 direction = 1f;
}
Код: Выделить всё
public class SinusMovementPattern : MovementPattern
{
[SerializeField]
public SinusMovementPatternData sinusMovementPatternData;
public override void SetMovementPatternData(SinusMovementPatternData newMovementPatternData)
{
base.SetMovementPatternData(newMovementPatternData);
sinusMovementPatternData = newMovementPatternData;
}
}
Они выглядят так это в инспекторе:


Думаю, если Я могу инициализировать свои классы данных, они будут отображаться в инспекторе вместо пустых полей. Однако когда я пытаюсь инициализировать их, например, с помощью:
Код: Выделить всё
public SinusMovementPatternData sinusMovementPatternData = ScriptableObject.CreateInstance();
Моя проблема связана с объектами MovementPatternData, я бы хотел, чтобы дочерние элементы MovementPattern заполняли свое собственное поле MovementPatternData при их создании , и мне нужен тип этот объект данных «заменит» исходный тип MovementPatternData, чтобы иметь дочерний тип, соответствующий текущему шаблону движения... Например, если я добавляю sinusMovementPattern к объекту, он должен иметь свой собственный SinusMovementPatternData , который «заменяет» исходный MovementPatternData.
Из предыдущих исследований я понял, что мне следует использовать собственный редактор, объекты с поддержкой сценариев и [SerializeReference] где-нибудь, мне бы хотелось получить дополнительные инструкции по этому поводу!
Подробнее здесь: https://stackoverflow.com/questions/793 ... hild-class
Мобильная версия