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

如下图所示

  

  使用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的释放。

  

Assetbundle创建与加载的更多相关文章

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

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

  2. Unity5 AssetBundle 打包以及加载

    using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; us ...

  3. unity中ScriptableObject在assetbundle中的加载

    转载请标明出处:http://www.cnblogs.com/zblade/ 以前都是写一些个人的调研博客,从今天开始,也写一些个人在开发中遇到的一些可以分享的趟坑博客,为后续的开发人员提供一些绵薄之 ...

  4. Assetbundle管理与加载

    最近在做项目优化的时候发现公司的项目用的还是老式的WWW去加载assetbundle资源的形式,而且是通过在两个Update里面分开加载AB和Asset的,这样虽然避免了协程的的使用,但是把一件事分开 ...

  5. Android四大组件之Activity(活动)及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

  6. Unity3d 5.x AssetBundle打包与加载

    1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要设置好AssetBundle的名称后,unity会自动将其打包,无需处理其他,唯独需要做的是设置好个AssetB ...

  7. powershell创建并加载配置文件

    $pshome :powershell的主目录 $profile :显示 Windows PowerShell 配置文件的路径 test-path $profile :确定是否已经在系统上创建了 Wi ...

  8. ExtJS 创建动态加载树

    Ext 中导航树的创建有两种方式:1.首先将所有的数据读出来,然后绑定到前台页面.2.每点击一个节点展开后加载子节点.在数据量比较小的时候使用第一种方式加载的会快一些,然而当数据量比较大的时候,我还是 ...

  9. 创建以及加载模块【nodejs第四篇】

    建立两个文件,文件一createModule.js ,文件二main.js createModule.js的代码,主要用于创建一个模块 /** * Created by Administrator o ...

随机推荐

  1. WebUploader 手机端上传图片(转)

    https://blog.csdn.net/loserorleader/article/details/50395040

  2. c#linq去除重复项并将相同数据的数量字段值相加

    这是执行前和执行后想要的效果 以下是用Sql语句实现的代码: select goodsno, goodsspec,SUM([count]) as count from goods group by g ...

  3. 剑指Offer(四):重建二叉树

    说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...

  4. django之模板系统 --》内容(filter过滤器、tags标签【for、if、with】、母板以及继承、crf_token、注释、组件、静态文件【load static】、get_static_prefix、自定义标签和tag)

    常用: Django模板中只需要记两种特殊符号: {{ }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 变量 {{ 变量名 }} 变量名由字母数字和下 ...

  5. [Unity工具]批量修改字体

    效果图: using System.IO; using System.Text; using UnityEditor; using UnityEngine; using UnityEngine.UI; ...

  6. CMD下的netstat命令

    查询端口启用情况 netstat -ano|findstr 80

  7. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test' 报错原因是:MySQL数据库没有 ...

  8. Redis、MongoDB及Memcached的区别

    Redis(内存数据库) 是一个key-value存储系统(布式内缓存,高性能的key-value数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).l ...

  9. 2. oracle创建表空间、用户并设置默认表空间、授权

    1.创建用户并设置默认表空间 create tablespace tablespacename datafile 'tablespacename.dbf' size 200m autoextend o ...

  10. AspxGridView服务器事件列表

    2.AutoFilterCellEditorCreate (1)语法:publicdelegate void ASPxGridViewEditorCreateEventHandler(object s ...