Unity编辑器OnGUI

在GUI方法中显示UI相关的内容,可以使用GUILayout和EditorGUILayout自动布局类中的静态方法

GUILayout可以在打包之后使用

EditorGUILayout只能在编辑器内使用

为自定义类添加[CustomEditor(typeof(class))]特性,可自定义脚本在Inspector面板内的显示

需要重写OnInspectorGUI方法

using UnityEngine;
/*添加编辑器宏,只在编辑器内使用*/
#if UNITY_EDITOR
using UnityEditor;

[CustomEditor(typeof(Test))]
class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        Test test = target as Test;
        //using中的显示内容为只读
        using (new EditorGUI.DisabledGroupScope(true))
        {
            EditorGUILayout.TextField("显示ID:", test.ID.ToString());
        }
        if (GUILayout.Button("按钮"))
        {
            //在Inspector面板Test组件下面添加一个按钮,点击后,执行下面的代码
        }
    }
}
#endif

public class Test : MonoBehaviour
{
    public int ID;
    public string _name;
}

在OnInspectorGUI方法中,渲染相关的方法和OnGUI是一样的

using UnityEngine;
using UnityEditor;

public class MyWindow : EditorWindow
{
    [MenuItem("MyWidow/Window")]
    static void Init()
    {
        MyWindow window = (MyWindow)EditorWindow.GetWindow(typeof(MyWindow));
        window.titleContent = new GUIContent("自定窗口");
        window.maxSize      = Vector2.one * 500;
        window.minSize      = Vector2.one * 200;
        window.Show();
    }

    public string folderPath;
    public string filePath;
    public Sprite sprite;

    private void OnGUI()
    {
        using (new EditorGUI.DisabledGroupScope(true))
        {
            folderPath = EditorGUILayout.TextField("文件夹路径", folderPath);
        }
        if (GUILayout.Button("选择文件夹"))
        {
            //选择文件夹:面板标题,初始路径,输入栏默认名称
            folderPath = EditorUtility.OpenFolderPanel("选择文件夹", Application.dataPath, "");
        }
        using (new EditorGUI.DisabledGroupScope(true))
        {
            filePath = EditorGUILayout.TextField("文件路径", filePath);
        }
        if (GUILayout.Button("选择文件"))
        {
            //选择文件:面板标题,初始路径,输入栏默认名称
            filePath = EditorUtility.OpenFilePanel("选择文件", Application.dataPath, "");
        }
        //选择一个精灵片
        sprite = (Sprite)EditorGUILayout.ObjectField("选择精灵片", sprite, typeof(Sprite));
    }
}

Unity编辑器OnGUI_第1张图片

 

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