Unity创建Assetbundle与加载

转载 2016年08月31日 00:08:20
<div class="postbody">
<div id="cnblogs_post_body"><p>【<span style="color: #ff0000;"><strong>Assetbundle创建与加载</strong></span>】</p>

  Unity有两种动态加载机制:一种是Resource.Load。一种是AssetBundle。Assetbundle是Unity Pro提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中。供加载、解压使用。  

创建Assetbundle

使用方法 BuildPipeline.BuildAssetBundle (Object, assets , pathName , options , targetPlatform) 

参数1:它只能放一个对象。

参数2:可以放入一个数组对象。

参数3:保存路径。

参数4:BuilderAssetBundleOptions

       CollectDependencies // 包含所有依赖关系。

       CompleteAssets//强制包含整个资源

       DisableWriteTypeTree//在资源包不包含类型信息。

       DeterministicAssetBundle//编译资源包使用一个哈希表储存对象ID在资源包中。

       UncompressedAssetBundle//不压缩Assetbundle,默认会进行压缩

参数5:平台

       特别注意的是,电脑上和手机上打出来的Assetbundle不能混用,不同平台只能用自己的。

载入Assetbundle

       使用方法:

       1)WWW bundle = new WWW(path);

       2)WWW bundle = WWW.LoadFromCacheOrDownload(path, fileVer);

载入成功后就可以通过资源名使用bundle.assetBundle.Load方法获取资源。

       如下图所示

  

  使用Assetbundle.Load会从Assetbundle的内存镜像中读取并创建一个Asset对象,创建的同时会分配相应的内存用于反序列化存储。

内存释放

  

  最后在使用Assetbundle时候最好的方式是。

  创建时:使用Assetbundle.load加载所需的asset,加载完后立即Assetbundle.Unload(false),释放Assetbundle文件本身的内存镜像,但不销毁加载的Asset对象。这样遍可以释放一部分内存。

  释放时。如果是通过Instantiate的对象,用Destroy进行销毁。在合适的地方使用Resources.UnloadUnusedAssets,释放已经没有引用的Asset。Unity底层会对对象引用进行计数,如果引用为0.执行UnloadUnusedAssets就可以全部释放。

 【使用要点

1、AssetBundle会使用Lzma压缩。

2、Resource下的资源发布时会变成resources.assets文件,2G磁盘大小限制。首次完全下载,不可更新。

3、AssetBundle的本地磁盘缓存可多达4G,除了Web版只能50M。

4、兼容性。

  

5、AssetBundle创建方法:

  

6、BundleOption的区别。

  

7、AssetBundle.CreateFromMemory()速度慢。

8、AssetBundle.CreateFromFile只能加载非压缩的AssetBundle。

9、LoadLevel方法详解:

  

10、AssetBundle的释放。

  

 

Unity5.x AssetBundle打包和加载示例

  • 2016年04月27日 11:30
  • 923KB
  • 下载

Unity3D基础学习之AssetBundle 资源包创建与加载

转载网址:http://blog.csdn.net/G__Dragon/article/details/16349981 前几天做了AssentBundle的例子,遇到了问题,在论坛上问...

Unity3D基础学习之AssetBundle 资源包创建与加载

前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了。下面介绍AssentBundle。 AssetBundles让你通过WWW类流式加载额外...

Unity Assetbundle的加载方式的效率和内存占用

首先,简要介绍一下加载AssetBundle的主要两种方式,分别是new WWW(url)和WWW.LoadFromCacheOrDownload,两种方式的具体用法,自己查官方API,这里不再叙述 ...

[Unity3d]安卓无法加载assetbundle的问题

前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了。下面介绍AssentBundle。 AssetBundles让你通过WWW类流式加载额...

Unity的动态加载AssetBundle资源笔记。

自己做备忘录笔记用,如有错误之处,还请阅读者指正。

Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解

Unity资源机制 1、概述       本文意在阐述Unity资源机制相关的信息,以及一些关于个人的理解与试验结果。另外还会提及一些因机制问题可能会出现的异常以及处理建议。大部分机制信息来源于官...

Unity5.X AssetBundle加载(增加路径处理)

1.增加对persistentDataPath文件夹的检测 2.如果persistentDataPath文件夹下没有目标ab 再对StreamingAssets文件夹进行检测 3.ab更新到persi...

Unity游戏开发使用Assetbundle加载场景实战

之前有一篇文章中我们相惜讨论了Assetbundle的原理,如果对原理还不太了解的朋友可以看这一篇文章:Unity游戏开发使用Assetbundle加载场景的原理 本篇文章我们将说说assetbund...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity创建Assetbundle与加载
举报原因:
原因补充:

(最多只允许输入30个字)