Unity-можно ли получить доступ к OnValidate () при использовании пользовательского инспектора?

недавно я сделал пользовательский инспектор, и я только что понял, что мой OnValidate() не вызывается при редактировании переменной в Инспекторе. Есть идеи о том, как вернуть мои вызовы OnValidate() снова, сохраняя пользовательский инспектор, который я использовал?

1 ответов


ответ был в сериализации и propertyfield.

пример с моим кодом, первая часть здесь просто показывает, что в моем основном скрипте у меня это объявлено. Помните, что открытые переменные уже сериализованы, поэтому нет необходимости ставить это.

public class Original : MonoBehaviour {

// Used for the user to input their board section width and height.
[Tooltip("The desired Camera Width.")]
public float cameraWidth;
}

теперь в моем Таможенном инспекторе у меня есть это:

    pubilc class Original_Editor : Editor{
         public override void OnInspectorGUI(){
              serializedObject.Update();
              // Get the camera width.
              SerializedProperty width = serializedObject.FindProperty("cameraWidth");
              // Set the layout.
              EditorGUILayout.PropertyField(width);
              // Clamp the desired values
              width.floatValue = Mathf.Clamp((int)width.floatValue, 0, 9999);
              // apply
              serializedObject.ApplyModifiedProperties();
         }
    }