找回密码
 立即注册
查看: 313|回复: 0

[笔记] Unity 架构师如何做资源管理

[复制链接]
发表于 2022-4-24 12:08 | 显示全部楼层 |阅读模式
1: Unity 资源管理需求分析
作为架构师,在开始动手之前,先分析清楚需求,你才能设计出合理的方案,我们来分析一下Unity资源管理都有哪些需求,把需求想清楚了,设计是自然而然的事情。
Unity资源管理主要需求:
   1:为开发与正式发布提供资源的加载/卸载;
   2:方便远程更新资源。
   3:带资源与不带资源发布游戏包要非常方便。
   4:做好版本,平台,渠道的资源管理。
2: Unity资源管理的技术方案
我们先回顾一下Unity的一些资源管理方案,分析一下各自的优缺点。
   (1): 传统的Resources 方案以被淘汰。
这个方案满足代码资源加载与卸载,但是不方便在更新资源,更新资源还要用AssetsBundle, 两套东西结合起来也很麻烦。而且不方便打空包,Resources要求将所有资源放到Resources文件夹下,而且Resources文件夹下的资源都会被打包进去,这样不方便打空包,一般Resource方案现在在企业里面已经不是使用了。
(2) 基于纯AssetsBundle的方案。
  现在越来越多的游戏采用纯AssetsBundle来做资源管理, 我们来看看如何使用纯AssetsBundle来做资源管理。
   A: 代码如何加载资源
先加载AssetsBundle, 然后再从AssetsBundle里面读取资源出来。这种方式确实能读取到资源,但是有一个很严重的问题,那就是开发的时候,每次都要对资源打ab包,每次多加一个资源的时候要多打一次ab包,这样,其实用起来是不方便的。所以我们想了个办法,通过条件编译,加一个预定义开关,如果是编辑器调试模式,那么我们直接使用AssetsDataBase.load来加载资源,不用打ab包,如果是发布模式,才从Ab包里面读取资源。这样开发的时候不用管ab包,打包发布的时候来做ab包即可。
B: AssetsBundle资源包放哪里呢?
  AssetsBundle资源包非常灵活,既可以放远程服务器,又可以放本地,接下来我们一起来看下AssetsBundle资源包如何存放,如何更新。
  打包的时候,如果你想打入到安装包里面去,那么我们可以把Ab资源包放StreammingAssets目录下,打包进去。加载的时候,使用UnityWebRequest加载StreammingAssets目录下的ab包。如果打空包, 那么StreammingAssets不放任何资源包就可以了。AssetsBundle更新的时候, 先根据版本判断,下载最新的AssetsBundle到私有可写目录下(每个应用,在操作系统上都有自己的一个可写的私有目录)。
C: 如何使用更新AssetsBundle包
下载AssetsBundle到app私有目录以后, 编写一个加载AssetsBundle的接口,这个函数里面,先去私有目录下找, 是否有对应的AssetsBundle,如果有,就从私有目录加载,如果没有,就从本地的StreammingAssets路径下加载。这样就能保证,每次优先从私有下载目录下加载AssetsBundle资源包。
D: 资源包要分平台与渠道。
  我们知道不同的平台(win64, x86, Mac, iOS Android) 要打不同的资源包,所以我们一般会扩展编辑器,统一一个窗口来管理与打包AssetsBundle资源包。打包界面,如图:


每次打包的时候,你知道打的是哪个平台,哪个渠道哪个版本的资源包,输出的时候也分平台分渠道。
E: 非常方便的指定哪些资源要导入到哪个ab包。
  我们把资源分类放好以后, 打ab包的时候,要新建ab包的名字,指定哪些资源要打入ab包,这个过程,如果用手动的话,肯定会很麻烦,而且容易出错。我们总结一下,一般我们的资源都是按照逻辑,分类放好的,所以一个文件夹或子文件夹的资源,可以打到一个ab包,有了这些以后,我们就做一个自动化指定资源包的编辑器扩展。要打包的文件或文件夹,创建一个数据库文件出来,打包的时候,遍历这些数据库文件,根据文件路径,将路径下的资源打入资源包里面。如图:




(3)基于Addressable 的资源管理。
Unity 自己推出了基于Addressable的资源管理,本质上和我们上面的AssetsBundle系统类似,有兴趣的同学可以关注一下这个模式的资源管理的发展。
资源管理与更新,是Unity架构师的重中之重,希望大家能有收获。
附:更多教学视频

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-3 06:21 , Processed in 0.173735 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表