Unity资源热更之AssetBundle(3)———新版本AssetBundle

————尊重原创,转载请注明出处,谢谢!!!!
http://blog.csdn.net/y1196645376/article/details/52602002
之前我们介绍了老版本的AssetBundle,在文章最后我们提到了在生成AB包的时候同时生成依赖关系信息文件。这样加载的时候就能够自动加载所有依赖项。而新版的AssetBundle正是采用的这样的方式。下面我来介绍一下:



1.Unity5.x的AssetBundle的新功能。

  • 为每个资源添加了AssetBundleName属性,我们可以通过Editor中的资源可视化视图下方为资源设置AssetBundleName。
    这里写图片描述

          上图第一个箭头所指既是AssetBundleName,名字固定为小写,另外,每个AssetBundle都可以设置一个Variant,其实就是一个后缀,实际上AssetBundle会添加这个后缀。如果有不同分辨率的同名资源,可以使用这个来区分。
    值得注意的是:
          AssetBundleName是可以带’/’符号的,这是一个很好的设计,因为我们打包的资源会很多,如果打包生成的所有AssetBundle都生成在同一个文件目录里,这肯定是很难管理的。不过名称引入’/’便可以很好解决这个问题。我们通过名字中设置类似”npc/demon/jushiguai.unity3d”这样的名字。那么在生成AssetBundle的时候会自动根据名字生成文件目录。这样生成的AssetBundle有了分类就很好管理了。如下图:

        这里写图片描述

  • 统一了打包AssetBundle接口:BuildPipeline.BuildAssetBundles(outputPath),outputPath为AB包生成文件夹路径。

  • BuildAssetBundles打包默认开启了:CompleteAssets ,CollectDependencies,DeterministicAssetBundle。

  • 打包模式新增:

    ForceRebuildAssetBundle             : 强制重新打包所有AssetBundle文件,一般情况只做增量打包。
    IgnoreTypeTreeChanges              : 用于判断AssetBundle更新时,是否忽略TypeTree的变化。
    AppendHashToAssetBundleName : 将Hash值添加在AB包文件名之后,开启后可通过文件名来判断哪些AB进行了更新。


  • 打包生成manifest文件,包含CRC,Hash,ID,AssetPath以及Dependencies等AssetBundle信息。新版的AssetBundle打包会自动帮你处理依赖关系。

  • 加载AssetBundle的API被替换,如下:

    4.x版本中的AssetBundle.CreateFromFile方法,在5.x版本中变成了AssetBundle.LoadFromFile方法。
    4.x版本中的AssetBundle.CreateFromMemory方法,在5.x版本中变成了LoadFromMemoryAsync方法。
    4.x版本中的AssetBundle.CreateFromMemoryImmediate方法,在5.x版本中变成了LoadFromMemory方法。


2.实战演练

  • 在这里我准备了一个实例工程,在Prefab文件夹放了一些素材。
    这里写图片描述

    简单介绍下,Cube1,Cube2是上篇文章使用的两个预制体。JuShiGuai是一个怪物模型的Prefab,使用了Mat1,Mat2两个材质,而Mat1,Mat2两个材质分别使用了JuShiGuai_01,JuShiGuai_02两个贴图。

  • 接下来我分别给这几个Prefab和Material,Texture设置AssetBundle。

    Mat1             :  materials/mat1.unity3d
    Mat2             :  materials/mat2.unity3d
    JuShiGuai_01 :  texture/jushiguai_01.unity3d
    JuShiGuai_02 :  texture/jushiguai_02.unity3d
    Cube1           :  cube1.unity3d
    Cube2           :  cube2.unity3d
    JuShiGuai      :  jushiguai.unity3d

  • 首先编写路径常量类:

using UnityEngine;
using System.Collections;

public 
  • 11
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值