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