Unity3dAssetbundle创建与加载

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

Assetbundle创建与加载

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方法获取资源。

如下图所示

img_868c8c4cce20f7a72e29deccd0d9f128.png

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

内存释放

img_7056ebe314abd9c4d38c84bafca803cb.png

最后在使用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、兼容性。

img_977ffc2c400913840b493f2326508118.png

5、AssetBundle创建方法:

img_b3f51a49fe82ec9da62b192e7c44e925.png

6、BundleOption的区别。

img_c976d2fecab330b2d2a96e8eab8ad3e6.png

7、AssetBundle.CreateFromMemory()速度慢。

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

9、LoadLevel方法详解:

img_a1b197669f9f872149a694807ba770f5.png

10、AssetBundle的释放。

img_dbb8427c8d7d920816ae2d9e634699de.png
相关文章
|
4月前
|
缓存 API 图形学
【Unity 3D】AssetBundle打包、上传、加载、卸载详解及演示(附源码)
【Unity 3D】AssetBundle打包、上传、加载、卸载详解及演示(附源码)
77 0
|
4月前
|
算法 图形学 UED
【Unity 3D】AssetBundle工作流程、打包策略详解(超详细必看)
【Unity 3D】AssetBundle工作流程、打包策略详解(超详细必看)
65 0
|
前端开发 JavaScript PHP
Yii2 使用AssetBundle中的$sourcePath对资源文件进引入和调用
Yii2 使用AssetBundle中的$sourcePath对资源文件进引入和调用
211 0
|
图形学 索引
|
存储 缓存 API
5.0版本之后的AssetBundle资源的打包和解析加载(Unity3D)
这几天在研究AssetBundle资源打包盒解析加载,也踩过很多坑,参考过很多人的文章 发现很多人关于AssetBundle的文章不是API过时了不能用,就是有点乱 也不是有点乱,就是摸不着头脑,让人不能快速的get到这个东西如何使用 所以我特意在踩过坑之后把我这个学到的经验分享给大家。
|
前端开发
一个"剑气"加载🌪️
一个"剑气"加载🌪️
PyQt5 图形界面 - Qt Designer创建qrc资源文件引用图片资源实例演示,QTextBrower组件引用图片资源方法展示
PyQt5 图形界面 - Qt Designer创建qrc资源文件引用图片资源实例演示,QTextBrower组件引用图片资源方法展示
341 0
PyQt5 图形界面 - Qt Designer创建qrc资源文件引用图片资源实例演示,QTextBrower组件引用图片资源方法展示
|
图形学 UED
Unity打包/读取AssetBundle资源全教程
Unity 资源AssetBundle打包 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chi...
2140 0
|
存储 缓存 API
AssetBundle使用模式
翻译自官网文档:https://unity3d.com/cn/learn/tutorials/topics/best-practices/assetbundle-usage-patterns?playlist=30089 管理加载的资产 在内存敏感的环境中仔细控制加载的对象的大小和数量非常重要。
1424 0