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

时间:2015-09-15 00:14:56

标签: c# unity3d

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

1 个答案:

答案 0 :(得分:2)

答案是序列化和属性。

我的代码示例,这里的第一部分只是显示在我的主脚本中我声明了这个。现在请记住,公共变量已经被序列化,所以不需要这样做。

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