Код: Выделить всё
[System.Serializable]
public class CustomClass
{
int myInt
}
Код: Выделить всё
public class OtherClass : MonoBehaviour
{
[SerializeField] CustomClass customClass;
}
результат требуется и дается с использованием приведенного выше кода, где DamageEffect = CustomClass и Damage = myInt
В моем пользовательском редакторе мне бы хотелось что-то вроде этого:
Код: Выделить всё
[CustomEditor(typeof(CardObject))]
class AnotherClassEditor : Editor
{
public override void OnInspectorGUI()
{
[SerializeField] CustomClass customclass;
}
}
Я также пробовал использовать EditorGUILayout.ObjectField(), но мне не удалось, у меня не так много опыта, поэтому, пожалуйста, постарайтесь, чтобы ответы были простыми.
На самом деле мне нужно, чтобы эта сериализация происходила только тогда, когда перечисление равно определенному значению, общий сценарий выглядит примерно так:
Код: Выделить всё
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
[CreateAssetMenu(fileName = "Card", menuName = "CardObject")]
public class CardObject : ScriptableObject
{
public List effectsTypes;
//other...
[HideInInspector] public List effects;
//other...
}
#if UNITY_EDITOR
[CustomEditor(typeof(CardObject))]
class CardObjectEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
CardObject cardObject = (CardObject)target;
foreach(CardEffectType effectType in cardObject.effectsTypes)
{
switch (effectType)
{
case CardEffectType.DamageEffect:
{
//!!!
}
}
}
}
}
#endif
public enum CardEffectType
{
DamageEffect, //other...
}
Подробнее здесь: https://stackoverflow.com/questions/741 ... -inspector
Мобильная версия