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();
}
}