编辑器资源管理器

解释

EditorResMgr 是一个用于在 Unity 编辑器中加载资源的管理器。它通过 Unity 编辑器的 API (AssetDatabase) 进行资源加载,但仅在开发和编辑模式下可用,不能在最终发布的游戏中使用。这种工具通常用来在开发过程中快速加载编辑器中的资源(如预制体、材质、纹理、音效等),以便开发人员调试、设计或者测试功能。

主要功能包括

  • 单个资源加载 :通过 LoadEditorRes<T> 方法,支持加载特定类型的资源(预制体、材质、纹理、音效等)。
  • 图集加载 :通过 LoadSprite 方法,可以从一个图集中加载指定的单个 Sprite。
  • 图集批量加载 :通过 LoadSprites 方法,可以加载图集中的所有 Sprite,并将它们存入字典中。

功能详解:

  1. rootPath :这是资源文件夹的根路径,所有加载的资源都位于 Assets/Editor/ArtRes/ 文件夹下。

  2. LoadEditorRes<T>:

    • 根据资源类型决定文件后缀名(例如:预制体 .prefab、材质 .mat、纹理 .png、音效 .mp3)。
    • 使用 AssetDatabase.LoadAssetAtPath<T>() 函数通过指定路径加载资源。
    • 仅在编辑器模式下(#if UNITY_EDITOR)可用,在发布版本中无法使用。
  3. LoadSprite:

    • 从图集中加载指定名字的 Sprite。
    • 通过 AssetDatabase.LoadAllAssetRepresentationsAtPath() 加载图集中的所有子资源,然后匹配名字返回对应的 Sprite。
  4. LoadSprites:

    • 加载图集中所有的 Sprite 并存入字典,键为 Sprite 的名称,值为 Sprite 对象。

使用案例

假设我们在开发过程中需要在场景中动态加载一些编辑器资源,比如预制体和纹理,以下是一个简单的使用案例:

案例:从编辑器中加载并生成一个预制体对象
cs 复制代码
using UnityEngine;

public class TestEditorResMgr : MonoBehaviour
{
    private GameObject loadedPrefab;

    void Start()
    {
#if UNITY_EDITOR
        // 从 EditorResMgr 加载一个预制体资源
        loadedPrefab = EditorResMgr.Instance.LoadEditorRes<GameObject>("MyPrefab");

        // 如果成功加载预制体,实例化到场景中
        if (loadedPrefab != null)
        {
            Instantiate(loadedPrefab, Vector3.zero, Quaternion.identity);
            Debug.Log("预制体加载成功并实例化!");
        }
        else
        {
            Debug.LogError("预制体加载失败!");
        }
#else
        Debug.LogWarning("在发布版本中无法加载编辑器资源!");
#endif
    }
}

运行流程:

  1. 资源加载 :
    • 在 Start 方法中,调用 EditorResMgr.Instance.LoadEditorRes<GameObject>("MyPrefab"),加载名为 MyPrefab.prefab 的预制体资源。
  2. 实例化对象 :
    • 如果预制体成功加载,调用 Instantiate 将其实例化到场景中的 (0, 0, 0) 位置。
    • 如果加载失败,则输出错误日志。

使用条件:

  • 开发模式 :该代码块仅在 Unity 编辑器模式下有效,因为它依赖于 AssetDatabase 进行资源加载。
  • 路径注意 :资源必须放置在 Assets/Editor/ArtRes/ 文件夹中,并根据资源类型指定正确的后缀名(如 .prefab、.png 等)。
相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹3 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
魔士于安3 天前
unity 丑陋哥布林 哥布林有humannoid 动画没 带动画
unity·游戏引擎·材质·贴图·模型
Polevne3 天前
C# SFTP客户端实现文件传输
c#·ssh
samble3 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
cjp5603 天前
024 . WPF MVVM类封装优化
c#
小贺儿开发3 天前
Unity 家居视频遥控(细节优化)
科技·unity·程序员·udp·视频·工具·通信
淡海水3 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
asdzx673 天前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本