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。本节只需要理解各种加载方式应被分别封装并统一管理,暂不涉及具体代码实现。

相关推荐
Pniubi4 分钟前
HashMap的扩容和树化边界
java·开发语言
gCode Teacher 格码致知2 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工2 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留2 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu2 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
益莱储中国4 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc5 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu5 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog5 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
CoderYanger5 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc