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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值