14.EditorGUIUtility资源加载

14.EditorGUIUtility-资源加载


14.1 知识点

准备工作

随便导入一张图片用于测试

Editor Default Resources文件夹

Editor Default Resources 也是Unity当中的一个特殊文件夹,它的主要作用是放置提供给 EditorGUIUtility 加载的资源。想要使用 EditorGUIUtility 公共类来加载资源,我们需要将资源放置在 Editor Default Resources 文件夹中。

加载资源(如果资源不存在返回null)

EditorGUIUtility.Load
注意事项:

  1. 只能加载Assets/Editor Default Resources/文件夹下的资源
  2. 加载资源时,需要填写资源后缀名,否则加载失败
private Texture img;
private void OnGUI()
{
    //加载资源(如果资源不存在返回null)
    if(GUILayout.Button("加载编辑器图片资源"))
        img = EditorGUIUtility.Load("head.png") as Texture;
    if (img != null)
        GUI.DrawTexture(new Rect(0, 50, 160, 90), img);
}

加载资源(如果资源不存在会直接报错)

EditorGUIUtility.LoadRequired
注意事项:

  1. 只能加载Assets/Editor Default Resources/文件夹下的资源
  2. 加载资源时,需要填写资源后缀名
private Texture img2;
private void OnGUI()
{
    //加载资源(如果资源不存在会直接报错)
    if (GUILayout.Button("加载编辑器图片资源(如果资源不存在会直接报错)"))
        img2 = EditorGUIUtility.LoadRequired("head.png") as Texture;
    if (img2 != null)
        GUI.DrawTexture(new Rect(0, 150, 160, 90), img2);
}


14.2 知识点代码

Lesson14_EditorGUIUtility_资源加载

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

public class Lesson14_EditorGUIUtility_资源加载 : MonoBehaviour
{
    void Start()
    {
        #region 准备工作

        //随便导入一张图片用于测试

        #endregion

        #region 知识点一 Editor Default Resources文件夹

        //Editor Default Resources 也是Unity当中的一个特殊文件夹
        //它的主要作用是放置提供给 EditorGUIUtility 加载的资源
        //想要使用EditorGUIUtility公共类来加载资源
        //我们需要将资源放置在 Editor Default Resources 文件夹中

        #endregion

        #region 知识点二 加载资源(如果资源不存在返回null)

        //对应API:
        //EditorGUIUtility.Load
        //注意事项:
        //1.只能加载Assets/Editor Default Resources/文件夹下的资源
        //2.加载资源时,需要填写资源后缀名

        #endregion

        #region 知识点三 加载资源(如果资源不存在会直接报错)

        //对应API:
        //EditorGUIUtility.LoadRequired
        //注意事项:
        //1.只能加载Assets/Editor Default Resources/文件夹下的资源
        //2.加载资源时,需要填写资源后缀名

        #endregion
    }
}

MyEditorGUIUtilityLearnWindow

using System;
using UnityEditor;
using UnityEngine;

public class MyEditorGUIUtilityLearnWindow : EditorWindow
{
    [MenuItem("编辑器拓展教程/MyEditorGUIUtilityLearnWindow")]
    private static void OpenMyEditorGUIUtilityLearnWindow()
    {
        MyEditorGUIUtilityLearnWindow win = EditorWindow.GetWindow<MyEditorGUIUtilityLearnWindow>("EditorGUIUtility学习面板");
        //win.titleContent = new GUIContent("EditorGUIUtility学习面板");
        win.Show();
    }

    #region Lesson14_EditorGUIUtility_资源加载

    private Texture img;
    private Texture img2;

    #endregion

    private void OnGUI()
    {
        #region Lesson14_EditorGUIUtility_资源加载

        //加载资源(如果资源不存在返回null)
        if(GUILayout.Button("加载编辑器图片资源"))
            img = EditorGUIUtility.Load("head.png") as Texture;
        if (img != null)
            GUI.DrawTexture(new Rect(0, 50, 160, 90), img);
        
        //加载资源(如果资源不存在会直接报错)
        if (GUILayout.Button("加载编辑器图片资源(如果资源不存在会直接报错)"))
            img2 = EditorGUIUtility.LoadRequired("head.png") as Texture;
        if (img2 != null)
            GUI.DrawTexture(new Rect(0, 150, 160, 90), img2);

        #endregion
    }
}


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

×

喜欢就点赞,疼爱就打赏