Unity3D-旧版AssetBundle相关API介绍

1.BuildPipeline.BuildAssetBundle :打包常规资源生成AssetBundle.

BuildPipeline.BuildAssetBundle

static function BuildAssetBundle (mainAsset : Object, assets : Object[], pathName : string, options : BuildAssetBundleOptions = BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, targetPlatform : BuildTarget = BuildTarget.WebPlayer) : bool
  • Object mainAsset:指定mainAsset,这样解析该AssetBundle包的时候可以通过assetBundle.mainAsset得到。
  • Object[] assets:指定所有asset,传入对象数组.解析的时候可以通过LoadAsset(“name”)得到。
  • pathName:指定生成的AB包的存储路径
  • BuildAssetBundleOptions:打包时候的一些特定属性选项。

    • 一些选项如下表所示
属性说明
CompleteAssets用于保证资源的完备性,默认开启
CollectDependencies用于收集资源的依赖项,默认开启
DeterministicAssetBundle用于为资源维护固定ID,默认开启
DisableWriteTypeTree禁用写入类型树
UncompressedAssetBundle打包时不进行压缩

- targetPlatform:适用平台。选择该AssetBundle应该使用哪些平台

属性说明
StandaloneWindows打包32位windows平台上的包
StandaloneWindows64打包64位windows平台上的包
IOS打包ios平台上的包
Android打包Android平台上的包

2.BuildStreamedSceneAssetBundle:将场景打包成AsssetBundle包

BuildStreamedSceneAssetBundle

  • levels:欲打包的所有场景文件路径。
  • localtionPath : 生成AssetBundle包保存的相对路径。
  • target : 同上。
  • options : 同上。

注:WWW下载好场景AssetLevle包之后通过获取成员属性assetBundle就可以吧场景信息读入到内存中了。然后只需要通过Application.LoadLevel(name)就可以加载对应的场景。


3.WWW类,通过一个路径进行下载(服务器和本地的操作都一样)

WWW www = new WWW (Url);

  • Url:下载路径,本地下载请加上file://,服务器下载请加上http://

注:www下载后的得到的对象可以通过获取成员属性assetBundle,即可得到下载文件的AssetBundle包。不过该方法下载得到的资源统统是放在内存里面的,也就是说每次打开游戏都需要重新下载。


4.WWW.LoadFromCacheOrDownload : 通过路径和版本号下载

public static WWW LoadFromCacheOrDownload(string url, int version, uint crc = 0);

  • Url:下载路径,本地下载请加上file://,服务器下载请加上http://

  • Version:版本号;这个版本号不需要你自己去维护,每次Unity从服务器下载资源的到本地的时候都会维护这个资源的版本号。当下次调用该API下载该资源会先对比本地版本号和参数版本号是否匹配,如果不匹配就从服务器重新下载,否则就从磁盘缓存文件中读取。

注: www下载后的得到的对象可以通过获取成员属性assetBundle,即可得到下载文件的AssetBundle包。该方法下载的资源是缓存到电脑缓存文件中的,另外按照宣雨松大大的说法,这个方法是一个异步方法,还占用内存,建议改用AssetBundle.CreatFromFile 它是一个同步方法,并且现在IOS 和 android 都支持了,最重要的一点就是用这个方法下载下载路径不需要加(file://或者http://前缀),切记,这是一个巨坑


5.BuildPipeline.PushAssetDependencies: 资源入栈& BuildPipeline.PopAssetDependencies: 资源出栈

这个就主要用于打包的资源具有依赖关系时的场景

Push和Pop都是成对使用,一个Push/Pop对就相当于一个Layer(层),层可以嵌套,内层可以依赖外层的资源。也就是说内层某资源在打包时,如果其引用的某个资源已经在外层加载了,那么内层的这个资源包就会包含该资源的引用而不是资源本身(大大缩减了资源包的大小)。Push/Pop实际上维持了一个依赖的堆栈。那么,在加载依赖资源包时,需要注意的是:先加载依赖的资源,然后加载其他资源,需要确保这个顺序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值