Unity资源管理(一)

        序:之前有接做过打包的工作,但是一直也没有整理下来,现在整理一下资源管理相关的顺便整理一下吧。

Resources:Assets目录下面新建Resources文件夹,其中的所有资源,不论是否被场景用到,都会被打包到游戏中。

资源加载方式:

1.Resources.Load:加载Resources目录的一个asset
2.Resources.LoadAsync:Resources.Load的异步方法
3.Resources.LoadAll:类似Resources.Load,但是用于加载某目录下所有asset
4.Resources.LoadAssetAtPath:加载Asset/目录下的资源,只能用于编辑器模式,写打包工具时可能用到

Resources类只能加载Resources文件夹下的资源,若出现嵌套,都会加载建议在Assets下放一个Resource文件夹就好;Resources加载资源时应使用相对路径,且不包含扩展名。如 Resources.Load<Texture2D>("images/texture1"); 

卸载资源:

1.Resources.UnloadAsset(Object assetToUnload):卸载指定的asset,只能用于从磁盘加载的;如果场景中有此asset的引用,Unity会自动重新加载它,CPU开销小。

2.Resources.UnloadUnusedAssets:卸载所有未被引用的asset,可以在画面切换时调用,或定时调用释放全局未使用资源。被脚本的静态变量引用的资源不会被卸载。尽量避免在游戏进行中调用,因为该接口开销较大,容易引起卡顿,可尝试用Resources.Unload(obj)逐个卸载,保证游戏的流畅度。

AssetBundle:

上图流程:

       1.Unity 在使用 WWW 方法时会分配一系列的内存空间来存放 WWW 实例对象、 WebStream 数据。该数据包括原始的 AssetBundle 数据、解压后的 AssetBundle 数据以及一个用于解压的 Decompression Buffer 。(一般情况下, Decompression Buffer 会在原始的 AssetBundle 解压完成后自动销毁,但需要注意的是, Unity 会自动保留一个 Decompression Buffer ,不被系统回收,这样做的好处是不用过于频繁的开辟和销毁解压 Buffer ,从而在一定程度上降低 CPU 的消耗。)

       2.当把AssetBundle 解压到内存后,可以使用WWW .assetBundle属性来获取AssetBundle 对象,从而可以得到各种Asset,进而对这些Assets进行加载或者实例化操作。加载过程中,Unity 会将AssetBundle 中的数据流转变为引擎可以识别的信息类型(纹理、材质、对象等)。加载完成后,开发者可以对其进行进一步的操作,比如对象的实例化、纹理和材质的复制和替换等。

更新:

       游戏一开始运行时,通过文件里面记录的版本号,和服务器上文件中的版本号比对。如果本地版本号低,下载对应的AB包到可读写目录,并对本地资源进行替换,这样进入游戏中加载的就是新下载的AB包资源。

更新流程如下:

       1.  将更新包资源(安装包中的资源)复制到可读写目录下
       2.  复制完成开始比对哈希文件,开始更新资源
       3.  下载添加资源,替换旧资源,删除原来可读写目录下的无用资源
       4.  初始化assetbundle依赖关系
       5.  完成整个流程

更新注意:

       1

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值