Inspector面板自定义绘制组件

自定义绘制流程

1. 创建两个类 分别继承于MonoBehaviour,Editor
2. 继承Editor的 需在类名上上加[CustomEditor(typeof(继承MonoBehaviour的类))]的属性
3. 重写 OnInspectorGUI函数 即可开始自定义绘制(以下代码为最基本结构)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class BaseUI : MonoBehaviour
{
    public int id;
    public new string name;
}

[CustomEditor(typeof(BaseUI))]
public class BaseUIEditor : Editor
{
    private BaseUI ui;

    private void Awake()
    {
        ui = target as BaseUI;
    }

    public override void OnInspectorGUI()
    {
        //默认绘制
        base.OnInspectorGUI();
        //自定义绘制
    }

}

自定义绘制功能

1.简单功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        //自定义绘制
        EditorGUILayout.Space();    //空行
        EditorGUILayout.LabelField("以下为自定义绘制");    //绘制文本
        EditorGUILayout.BeginHorizontal();  //开始水平布局
        EditorGUILayout.LabelField("Id");
        ui.id = EditorGUILayout.IntField(ui.id);    //绘制可输入框(Int类型)
        EditorGUILayout.EndHorizontal();    //结束水平布局

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Name");
        ui.name = EditorGUILayout.TextField(ui.name);   //绘制可输入框(string类型)
        EditorGUILayout.EndHorizontal();
        if (GUILayout.Button("点击按钮"))   //绘制按钮(点击按钮时会返回true)
        {

        }