40.EditorUtility窗口进度条

40.EditorUtility-编辑器默认窗口相关


40.1 知识点

显示提示窗口

EditorUtility.DisplayDialog(“标题”, “显示信息”, “确定键名”);
注意:窗口显示会阻塞逻辑 即一定要对提示窗口做处理后才会显示其他逻辑

private void OnGUI()
{
    if(GUILayout.Button("显示提示窗口"))
    {
        if(EditorUtility.DisplayDialog("测试窗口", "确定一定要做这件事情吗", "一定要做"))
        {
            Debug.Log("确定要做,在这里去处理逻辑");
        }
        else
        {
            Debug.Log("点击了叉叉,不去做");
        }

        Debug.Log("窗口显示完毕");
    }
}

显示三键提示面板

int EditorUtility.DisplayDialogComplex(“标题”, “显示信息”, “按钮1名字”, “按钮3名字”, “按钮2名字”);
返回值 0-按钮1按下 1-按钮3按下 2-按钮2按下
注意:窗口显示会阻塞逻辑

private void OnGUI()
{
    if(GUILayout.Button("显示三键提示窗口"))
    {
        int result = EditorUtility.DisplayDialogComplex("三键提示", "显示信息", "选项1", "关闭", "选项2");
        switch (result)
        {
            case 0:
                Debug.Log("选项1按下了");
                break;
            case 1:
                Debug.Log("关闭键按下了");
                break;
            case 2:
                Debug.Log("选项2按下了");
                break;
            default:
                break;
        }

        Debug.Log("三键窗口显示完毕");
    }
}

进度条相关

显示进度条
EditorUtility.DisplayProgressBar(“进度条”, “显示信息”, 进制值0~1);

关闭进度条
EditorUtility.ClearProgressBar();

注意:进度条窗口不会卡逻辑,但是需要配合关闭进度条使用

private void OnGUI()
{        
    if(GUILayout.Button("显示更新进度条"))
    {
        //每次点击加进度条进度
        value += 0.1f;
        EditorUtility.DisplayProgressBar("进度条标题", "进度条窗口显示内容", value);
        Debug.Log("进度条窗口显示完毕");
    }

    if(GUILayout.Button("关闭进度条"))
    {
        value = 0;
        EditorUtility.ClearProgressBar();
    }
}


40.2 知识点代码

Lesson40_EditorUtility_编辑器默认窗口相关

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson40_EditorUtility_编辑器默认窗口相关 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 显示提示窗口

        //EditorUtility.DisplayDialog("标题", "显示信息", "确定键名");
        //注意:窗口显示会阻塞逻辑 即一定要对提示窗口做处理后才会显示其他逻辑

        #endregion

        #region 知识点二 显示三键提示面板

        //  int EditorUtility.DisplayDialogComplex("标题", "显示信息", "按钮1名字", "按钮3名字", "按钮2名字");
        //  返回值 0-按钮1按下 1-按钮3按下 2-按钮2按下
        //注意:窗口显示会阻塞逻辑

        #endregion

        #region 知识点三 进度条相关

        //显示进度条
        //EditorUtility.DisplayProgressBar("进度条", "显示信息", 进制值0~1);
        //关闭进度条
        //EditorUtility.ClearProgressBar();

        //注意:进度条窗口不会卡逻辑,但是需要配合关闭进度条使用

        #endregion
    }
}

MyEditorUtilityLearnWindow

using System;
using UnityEditor;
using UnityEngine;

public class MyEditorUtilityLearnWindow : EditorWindow
{
    [MenuItem("编辑器拓展教程/MyEditorUtilityLearnWindow")]
    private static void OpenMyEditorUtilityLearnWindow()
    {
        MyEditorUtilityLearnWindow win = EditorWindow.GetWindow<MyEditorUtilityLearnWindow>("EditorUtility知识学习");
        win.Show();
    }

    #region Lesson40_EditorUtility_编辑器默认窗口相关

    private float value;

    #endregion


    private void OnGUI()
    {
        #region Lesson40_EditorUtility_编辑器默认窗口相关

        if (GUILayout.Button("显示提示窗口"))
        {
            if (EditorUtility.DisplayDialog("测试窗口", "确定一定要做这件事情吗", "一定要做"))
            {
                Debug.Log("确定要做,在这里去处理逻辑");
            }
            else
            {
                Debug.Log("点击了叉叉,不去做");
            }

            Debug.Log("窗口显示完毕");
        }

        if (GUILayout.Button("显示三键提示窗口"))
        {
            int result = EditorUtility.DisplayDialogComplex("三键提示", "显示信息", "选项1", "关闭", "选项2");
            switch (result)
            {
                case 0:
                    Debug.Log("选项1按下了");
                    break;
                case 1:
                    Debug.Log("关闭键按下了");
                    break;
                case 2:
                    Debug.Log("选项2按下了");
                    break;
                default:
                    break;
            }

            Debug.Log("三键窗口显示完毕");
        }

        if (GUILayout.Button("显示更新进度条"))
        {
            //每次点击加进度条进度
            value += 0.1f;
            EditorUtility.DisplayProgressBar("进度条标题", "进度条窗口显示内容", value);
            Debug.Log("进度条窗口显示完毕");
        }

        if (GUILayout.Button("关闭进度条"))
        {
            value = 0;
            EditorUtility.ClearProgressBar();
        }

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏