19.资源加载模块:主要作用和基本原理

一、常见的资源加载方式

Unity 项目中可能同时使用多种资源加载方式:

  • Resources:加载 Resources 文件夹中的资源。
  • AssetBundle:加载本地或远程资源包。
  • UnityWebRequest :从本地路径或网络获取资源和数据。
  • AssetDatabase:在 Unity 编辑器中加载和管理工程资源。
  • Addressables:通过地址统一加载本地或远程资源。
  • System.IO:读写文件数据。
    资源还可能位于:
  • Resources 文件夹
  • StreamingAssets 路径
  • persistentDataPath 路径
  • AssetBundle 或远程服务器

二、为什么需要资源加载模块

实际开发中可能组合使用多种加载方式。如果加载代码分散在不同系统中,会出现两个主要问题:

  1. 各种资源的加载和卸载逻辑分散,不方便统一管理。
  2. 异步加载经常需要协程或回调,容易产生大量重复代码。

三、资源加载模块的主要作用

资源加载模块主要负责:

  • 统一管理不同资源的加载方式。
  • 统一管理资源卸载。
  • 封装同步和异步加载流程。
  • 让外部根据需求选择合适的加载模块。
    外部系统只负责提出"加载什么资源",具体怎样加载由对应的资源管理器处理。

四、资源加载模块的基本原理

先将不同加载方式分别模块化:

text 复制代码
ResourcesMgr       → 管理 Resources 资源
AssetBundleMgr     → 管理 AssetBundle 资源
UnityWebRequestMgr → 管理本地或网络资源
EditorResourceMgr  → 管理编辑器资源
Addressables       → 管理可寻址资源

然后通过上层资源加载模块进行整合:

text 复制代码
             业务系统
                 ↓
          资源加载统一入口
                 ↓
    ┌────────────┼────────────┐
    ↓            ↓            ↓
ResourcesMgr  AssetBundleMgr  其他加载模块

调用者根据项目需求选择具体加载方式,各加载模块只负责自己对应的资源。

五、当前 Unity 中的选择

Resources 仍然可以用于简单项目和快速原型,但大量使用可能增加构建体积、内存占用和启动时间。当前 Unity 的 Addressables 可以通过地址异步加载本地或远程资源,并自动处理资源依赖。对于需要统一资源组织和异步加载的新项目,通常优先考虑 Addressables。本节只需要理解各种加载方式应被分别封装并统一管理,暂不涉及具体代码实现。

相关推荐
波力海苔夹心脆6759 分钟前
C# 序列化与反序列化详解:System.Text.Json、Newtonsoft.Json、XmlSerializer 用法、特性选项与安全实践
经验分享·后端·c#·json·.net
现任明教教主~1 小时前
Thinkphp站群蜘蛛池SaaS系统YanyvSEO含多用户/积分/六大引擎计费/易支付对接
java·开发语言·spring
Zhou1411361 小时前
SpringSecurity_02_授权与高级功能
开发语言·python
码匠许师傅2 小时前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http
小小小小钰儿3 小时前
1.5-Python网络编程
开发语言·网络·python·web安全·计算机·网络安全
hiahiahia1233 小时前
实现完整 Tool Dispatcher
开发语言·前端
AC赳赳老秦4 小时前
公开音频转写信息提取:OpenClaw 处理发布会与听证会文本并提取核心决策信息
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
@yanyu6664 小时前
C编译器安装与第一个C程序
c语言·开发语言