Unity -使用自定义检查器时是否可以访问OnValidate() ?

本文关键字:访问 OnValidate 是否 自定义 检查 Unity | 更新日期: 2023-09-27 18:12:47

我最近做了一个自定义检查器,我刚刚意识到当我在检查器中编辑变量时,我的OnValidate()没有被调用。关于如何让我的调用回到OnValidate()再次,同时保持自定义检查器我使用的任何想法?

Unity -使用自定义检查器时是否可以访问OnValidate() ?

答案在serializing和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();
         }
    }