编辑器资源管理器

ops/2024/10/21 22:07:21/

解释

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 对象。

使用案例

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

案例:从编辑器中加载并生成一个预制体对象
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("预制体加载失败!");}
#elseDebug.LogWarning("在发布版本中无法加载编辑器资源!");
#endif}
}

运行流程:

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

使用条件:

  • 开发模式:该代码块仅在 Unity 编辑器模式下有效,因为它依赖于 AssetDatabase 进行资源加载。
  • 路径注意:资源必须放置在 Assets/Editor/ArtRes/ 文件夹中,并根据资源类型指定正确的后缀名(如 .prefab.png 等)。

http://www.ppmy.cn/ops/127386.html

相关文章

Tauri(读音:踹你)开发简介:1.创建和运行第一个app

桌面app与web app之间的界限越来越模糊&#xff0c;以前可能说基于web编写的app性能不好&#xff0c;但是现在我们来看&#xff0c;不管钉钉还是vscode&#xff0c;都是采用了Electron框架&#xff0c;以web模式开发出来的。 提到Electron相信许多程序员都不陌生&#xff0c;它…

AI赋能程序员-如何编写提示词

1、系统预设 eg: 你现在是一名优秀程序后端工程词、你需要根据我提供的数据返回一个标准的echart图表格式 2、少样样本学习 eg: 当我给你“|商品名称| 商品数量|\n| 茅台|10|\n| 五粮液|20| 时”&#xff0c;给我返回 { xAxis: { type: category, data: [茅台,五粮液] …

字节 HLLM 论文阅读

github连接&#xff1a;https://github.com/bytedance/HLLM 探讨问题&#xff1a; 推荐LLM的三个关键问题&#xff1a; LLM预训练权重通常被认为是对世界知识的概括&#xff0c;其对于推荐系统的价值&#xff1f;对推荐任务进行微调的必要性&#xff1f;LLM是否可以在推荐系统…

295×413像素是几寸照片?如何手机拍照制作

在数字时代&#xff0c;我们经常需要将照片转换成电子版&#xff0c;以满足各种在线申请和报名的需求。其中&#xff0c;295413像素的照片尺寸是一种常见的规格&#xff0c;它通常对应于一寸照片。那么&#xff0c;如何使用手机拍摄并制作符合这一规格的电子照片呢&#xff1f;…

【乐企文件生成工程】关于乐企文件生成工程的详细介绍

【乐企文件生成工程】关于乐企文件生成工程的详细介绍 【乐企文件生成工程】关于乐企文件生成工程的详细介绍

chat_gpt回答:python获取当前utc时间,将xml里时间tag里的值修改为当前时间

你可以使用 lxml 库来读取、修改 XML 文件中的某个标签的值&#xff0c;并将其保存为新的 XML 文件。以下是一个示例代码&#xff0c;展示如何获取当前的 UTC 时间&#xff0c;并将 XML 文件中的某个时间标签修改为当前时间。 示例代码&#xff1a; from lxml import etree f…

Linux -- 进程间通信、初识匿名管道

目录 进程间通信 什么是进程间通信 进程间通信的一般规律 前言&#xff1a; 管道 代码预准备&#xff1a; 如何创建管道 -- pipe 函数 参数&#xff1a; 返回值&#xff1a; wait 函数 参数&#xff1a; 验证管道的运行&#xff1a; 源文件 test.c &#xff1a; m…

多IP访问网站

1.关闭防火墙 systemctl stop firewalld setenforce 0 2.下载nginx mount /dev/sr0/mnt dnf install nginx -y 3.启动nginx systemctl start nginx 4.修改nginx vim /etc/nginx/nginx.conf mkdir /www systemctl restart nginx 5.修改IP地址 nmtui nmcli connecti…