Editor类---自定义属性面板

一、Editor类属性及函数

首先提供官方参考文档:API-Reference-Editor以及用户手册案例;

概述: Editor属于UnityEngine.Editor命名空间,继承与ScriptableObject类,通过继承该类并重写函数可以为自定义的对象定义它相应的编辑器;

属性

  • serializedObject:返回一个被检视的序列化的对象;它与target的区别:在OnInspectorGUI()中使用serializedObject对象,不要使用target,但是不要在OnSceneGUI和OnPreviewGUI中使用serializedObject,而应该使用target;
  • target/targets:获取一个被检视对象/一组被检视对象;

方法

  • OnInspectorGUI():实现这个函数用于自定义属性面板,类似于OnGUI();

Message

 

二、案例使用

1.属性编辑器(Custom Editor:Manual)

比较常用的是为脚本组件定制它的属性面板的编辑器,继承自MonoBehavior以脚本组件添加到游戏对象上时,在属性面板上会有一个默认的布局;当然,属性面板上所出现的都必须是可序列化属性;如下:先定义一个属性,获取到序列化对象的属性值;然后使用EditorGUILayout修改布局;

    SerializedProperty lookAtPoint;

    void OnEnable()
    {
        lookAtPoint = serializedObject.FindProperty("lookAtPoint");
    }

    public override void OnInspectorGUI()
    {
        //serializedObject.Update();
        EditorGUILayout.PropertyField(lookAtPoint,new GUIContent("look point"));
        serializedObject.ApplyModifiedProperties();
    }

2.UnityEditor属性之CustomEditor

当我们在一个继承自Editor类的脚本中使用CustomEditor关联一个脚本组件之后,该编辑器脚本的serializedObject就变成了相关联脚本的序列化对象,查找属性就只能查找到这个脚本组件内的属性;

//将编辑器和脚本关联
[CustomEditor(typeof(LookAtPoint))]
//脚本组件是否可以多个同时编辑
[CanEditMultipleObjects]

 

你可能感兴趣的:(Unity,Reference,Unity,Editor)