41.EditorUtility文件面板相关

41.EditorUtility-文件面板相关


41.1 知识点

显示 文件 存储面板

通常用于在编辑器中保存新创建的文件或选择文件的保存路径
string path = EditorUtility.SaveFilePanel(“窗口标题”, “打开的目录”, “保存的文件的名称”, “文后缀格式”)

private void OnGUI()
{
    // 显示文件存储面板
    if (GUILayout.Button("打开文件存储面板"))
    {
        string str = EditorUtility.SaveFilePanel("保存我的文件", Application.dataPath, "Test", "txt");
        // 会得到带上文件名的存储路径,可以利用路径写入
        Debug.Log(str);
        if (str != "")
            File.WriteAllText(str, "123123123123123");
    }
}




显示 文件 存储面板(默认指定在Asset文件夹中)

与 SaveFilePanel 类似,但是它将保存路径限制在项目目录中,只允许用户选择项目内的文件夹作为保存路径
string path = EditorUtility.SaveFilePanelInProject(“窗口标题”, “保存的文件的名称”, “后缀格式”, “在对话框窗口中显示的文本摘要”);

private void OnGUI()
{       
    // 显示文件存储面板(默认为工程目录中)
    if (GUILayout.Button("打开文件存储面板(仅限工程文件夹下)"))
    {
        string str2 = EditorUtility.SaveFilePanelInProject("保存项目内的文件", "Test2", "png", "自定义文件");
        // 只会从Asset开始拼接路径
        Debug.Log(str2);
    }
}


显示 文件夹 存储面板

通常用于在编辑器中选择文件夹作为保存路径,用于保存文件或执行其他与文件夹相关的操作
string path = EditorUtility.SaveFolderPanel(“窗口标题”, “文件夹”, “默认名称”);

private void OnGUI()
{        
    // 显示文件夹存储面板
    if (GUILayout.Button("显示文件夹存储面板"))
    {
        string str3 = EditorUtility.SaveFolderPanel("得到一个存储路径(文件夹)", Application.dataPath, "");
        // 显示带上文件夹的完整路径,点击取消返回空字符串
        Debug.Log(str3);
    }
}


显示打开 文件 面板

通常用于在编辑器中选择文件进行打开或执行其他与文件相关的操作
string path = EditorUtility.OpenFilePanel(“窗口标题”, “文件路径”, “后缀格式”);

private void OnGUI()
{        
    // 显示打开文件面板
    if (GUILayout.Button("显示打开文件面板"))
    {
        string str4 = EditorUtility.OpenFilePanel("得到一个文件路径", Application.dataPath, "txt");
        // 会得到带上文件名的存储路径,可以利用路径读取资源
        Debug.Log(str4);
        if (str4 != "")
        {
            string txt = File.ReadAllText(str4);
            Debug.Log(txt);
        }
    }
}


显示打开 文件夹 面板

通常用于在编辑器中选择文件夹进行打开或执行其他与文件夹相关的操作
string path = EditorUtility.OpenFolderPanel(“窗口标题”, “文件夹”, “默认名称”);

private void OnGUI()
{        
    // 显示打开文件夹面板
    if (GUILayout.Button("显示打开文件夹面板"))
    {
        string str4 = EditorUtility.OpenFolderPanel("得到一个文件路径", Application.dataPath, "");
        // 显示带上文件夹的完整路径,点击取消返回空字符串
        if (str4 != "")
        {
            Debug.Log(str4);
        }
    }
}



41.2 知识点代码

Lesson41_EditorUtility_文件面板相关

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

public class Lesson41_EditorUtility_文件面板相关 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 显示 文件 存储面板

        //通常用于在编辑器中保存新创建的文件或选择文件的保存路径
        //string path = EditorUtility.SaveFilePanel("窗口标题", "打开的目录", "保存的文件的名称", "文后缀格式")

        #endregion

        #region 知识点二 显示 文件 存储面板(默认指定在Asset文件夹中)

        //与 SaveFilePanel 类似,但是它将保存路径限制在项目目录中,只允许用户选择项目内的文件夹作为保存路径
        //string path = EditorUtility.SaveFilePanelInProject("窗口标题", "保存的文件的名称", "后缀格式", "在对话框窗口中显示的文本摘要");

        #endregion

        #region 知识点三 显示 文件夹 存储面板

        //通常用于在编辑器中选择文件夹作为保存路径,用于保存文件或执行其他与文件夹相关的操作
        //string path = EditorUtility.SaveFolderPanel("窗口标题", "文件夹", "默认名称");

        #endregion

        #region 知识点四 显示打开 文件 面板

        //通常用于在编辑器中选择文件进行打开或执行其他与文件相关的操作
        //string path = EditorUtility.OpenFilePanel("窗口标题", "文件路径", "后缀格式");

        #endregion

        #region 知识点五 显示打开 文件夹 面板

        //通常用于在编辑器中选择文件夹进行打开或执行其他与文件夹相关的操作
        //string path = EditorUtility.OpenFolderPanel("窗口标题", "文件夹", "默认名称");

        #endregion
    }
}

MyEditorUtilityLearnWindow

using System;
using System.IO;
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
        
        #region Lesson41_EditorUtility_文件面板相关

        //1.显示文件存储面板
        if (GUILayout.Button("打开文件存储面板"))
        {
            string str = EditorUtility.SaveFilePanel("保存我的文件", Application.dataPath, "Test", "txt");
            //会得到带上文件名的存储路径,可以利用路径写入
            Debug.Log(str);
            if (str != "")
                File.WriteAllText(str, "123123123123123");
        }

        //2.显示文件存储面板(默认为工程目录中)
        if (GUILayout.Button("打开文件存储面板(仅限工程文件夹下)"))
        {
            string str2 = EditorUtility.SaveFilePanelInProject("保存项目内的文件", "Test2", "png", "自定义文件");
            //只会从Asset开始拼接路径
            Debug.Log(str2);
        }

        //3.显示文件夹存储面板
        if (GUILayout.Button("显示文件夹存储面板"))
        {
            string str3 = EditorUtility.SaveFolderPanel("得到一个存储路径(文件夹)", Application.dataPath, "");
            //显示带上文件夹的完整路径,点击取消返回空字符串
            Debug.Log(str3);
        }

        //4.显示打开文件面板
        if (GUILayout.Button("显示打开文件面板"))
        {
            string str4 = EditorUtility.OpenFilePanel("得到一个文件路径", Application.dataPath, "txt");
            //会得到带上文件名的存储路径,可以利用路径读取资源
            Debug.Log(str4);
            if (str4 != "")
            {
                string txt = File.ReadAllText(str4);
                Debug.Log(txt);
            }
        }

        //5.显示打开文件夹面板
        if (GUILayout.Button("显示打开文件夹面板"))
        {
            string str4 = EditorUtility.OpenFolderPanel("得到一个文件路径", Application.dataPath, "");
            //显示带上文件夹的完整路径,点击取消返回空字符串
            if (str4 != "")
            {
                Debug.Log(str4);
            }
        }

        #endregion
    }
}


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

×

喜欢就点赞,疼爱就打赏