打包思路:确定要打包资源的路径、和打包的输出路径(一般为S路径),把存放资源的路径使用递归进行遍历,获取所有资源,文件类型的资源可以通过File拷贝或IO写到输出路径,其他资源的打包通过AssetBundle方式打包,即确定AB包和AB包内的资源,使用BuildPieline.BuildAssetBundle进行打包。

  BuildPipeline.BuildAssetBundles()两个重载,三个参数: BuildPipeline.BuildAssetBundles(bundle的输出路径,   BuildAssetBundleOptions<压缩格式>,BuildTarget当前资源需要被使用的平台的分类);四个参数:BuildPipeline.BuildAssetBundles(bundle的输出路径,AssetBundleBuild对象的集合(AssetBundleBuild对象,存储了AB包名和资源路径数组),   BuildAssetBundleOptions<压缩格式>,BuildTarget当前资源需要被使用的平台的分类)。

  打包路径:

  一般以Appcation.Datapath(Assets目录)下的StreamingAssets为输出路径。

  压缩方式:

  1)BuildAssetBundleOptions.None:使用LZMA算法压缩,压缩的包更小,但是加载时间更长,需要解压全部。

  2)BuildAssetBundleOptions.UncompressedAssetBundle:不压缩,包大,加载快
  3)BuildAssetBundleOptions.ChunkBasedCompression:使用LZ4压缩,压缩率没有LZMA高,但是我们可以加载指定资源而不用解压全部。
  注意:使用LZ4压缩,可以获得可以跟不压缩相媲美的加载速度,而且比不压缩文件要小。

  BuildTarget当前资源需要被使用的平台的分类:PC端,移动端(安卓,ios)。

  以下这张表是当使用不同的压缩方式和不同的加载方法时,内存和性能的开销情况比较:    
   不压缩  LZ4压缩 LZMA压缩 
 WWW加载 内存:未压缩资源包的大小(+当WWW未被Disposed时未压缩资源包的大小)
性能:没有额外的处理过程
 内存:LZ4高压缩包的大小(+当WWW未被Disposed时LZ4高压缩包的大小)
性能:没有额外的处理过程
内存:LZ4压缩包的大小(+当WWW未被Disposed时LZMA压缩包的大小)
性能:当下载的时候,LZMA解压过程+LZ4压缩过程
 LoadFromCacheOrDownload加载 内存:没有额外内存占用
性能:从磁盘读取的过程
内存: 没有额外内存占用
性能:从磁盘读取的过程
内存:没有额外内存占用
性能:从磁盘读取的过程
LoadFromMemory (异步)加载  内存:未压缩的资源包大小
性能:没有额外的处理过程
内存:LZ4高压缩资源包的大小
性能:没有额外的处理过程
内存:没有额外内存占用
性能:从磁盘读取的过程
LoadFromFile(异步)加载 内存:没有额外内存占用
性能:从磁盘读取的过程
内存:没有额外内存占用
性能:从磁盘读取的过程
内存:LZ4压缩包的大小
性能:从磁盘读取+LZMA解压+LZ4压缩 的过程
WebRequest (也需要缓存)加载  内存:未压缩的资源包大小
性能:没有额外处理过程[+如果缓存则从磁盘中读取的过程]
 内存:LZ4高压缩包的大小
性能:没有额外处理过程[+如果缓存则从磁盘中读取的过程]
内存:LZ4压缩包的大小
性能:当下载的时候,LZMA解压过程+LZ4压缩过程[+如果缓存则从磁盘中读取的过程]

  

AssetBundle打包-----BuildPipeline的应用的更多相关文章

  1. Unity5 AssetBundle 打包以及加载

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

  2. Unity5.x版本AssetBundle打包研究

    Unity5的AssetBundle打包机制和以前版本不太一样.简单的说就是,只要给你要打包的资源设置一个AssetBundleName ,Unity自身会对这些设置了名字的资源进行打包,如果一个资源 ...

  3. Unity3D使用Assetbundle打包加载(Prefab、场景)

    之前有一篇文章中我们相惜讨论了Assetbundle的原理,如果对原理还不太了解的朋友可以看这一篇文章:Unity游戏开发使用Assetbundle加载场景的原理 本篇文章我们将说说assetbund ...

  4. U3D assetbundle打包

    using UnityEngine; using System.Collections; using UnityEditor; //此脚本不一定要放于editor目录下,经测试,放于其它地方也可以 p ...

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

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

  6. AssetBundle打包

    为热更新打基础(xlua\tolua) 素材.源码链接:http://www.sikiedu.com/course/74/task/1812/show 一.AssetBundle的定义和作用 1,As ...

  7. AssetBundle打包详解

    Unity5.x AssetBundle打包详解 在网上查看了很多资料,想详细搞清楚AssetBundle的原理.以实现符合项目需求的打包工具和加载逻辑 1. AssetBundle是什么? Asse ...

  8. Unity5 AssetBundle打包加载及服务器加载

    Assetbundle为资源包不是资源 打包1:通过脚本指定打包 AssetBundleBuild ab = new AssetBundleBuild                         ...

  9. Unity——AssetBundle打包工具

    Unity批量打AB包 为了资源热更新,Unity支持将所有资源打包成AssetBundle资源,存放在SteamingAssets文件夹中: 在项目发布之前,需要将所有资源打包成.ab文件,动态加载 ...

随机推荐

  1. python之路-----MySql操作三

    mysql 概述 一.主要内容: 视图 create view name (select * from user where id>5); 触发器 函数 存储过程 索引 二.各模块详细说明 1. ...

  2. http中的socket是怎么一回事

    首先我们先看一下socket的定义:是在传输层和应用层中间的一个抽象层,是实现网络通信的接口. 那么什么是传输层,什么是应用层呢?网络又是怎样通信的呢?为了弄清这两个问题,我们需要弄清一个概念TCP/ ...

  3. django的ORM

    在项目根目录下运行 python manage.py shell 即可进入django的交互shell界面 查询 from my_app.models import MyTestModel datas ...

  4. 【webpack学习笔记】a04-建立开发环境

    开发环境就是在开发过程中为了方便配置的环境,生产环境就是开发完成即将上线的情况. 好了,说了句废话,切入正题. 在开发时,打包后的文件压缩成一团,报错调试的时候傻眼了有木有?每次做出修改需要到浏览器查 ...

  5. JAVA第2课

         JAVA   第二课 Eclipse 在加载JAVA环境出错的时候处理办法: 项目-属性-Java build path-add library -JRE system library-OK ...

  6. eclipse 打开时一闪而过解决办法

    编辑文件:eclipse.ini,在 -vmargs 上一行添加: -vmC:/Program Files/Java/jdk1.8.0_131/jre/bin “C:/Program Files/Ja ...

  7. kaliLinux 安装 telnet

    一.安装xinetd telnetd root@helm:~# apt-get install xinetd telnetd 二.查看服务是否启动状态 说明自启动了 如果没有需要启动xinetd,启动 ...

  8. python学习笔记:1.初识python

    4.26 今日内容大纲 1.初识计算机.CPU 内存 硬盘 2.python初识 3.python发展史以及影响 4.python的分类 5.python的种类 6.变量 7.常量 8.注释 9.基础 ...

  9. jQuery 入口函数主要有4种写法

    jqery  入口函数主要有4种写法,其中以第3种方法最为方便. <!DOCTYPE html> <html lang="en"> <head> ...

  10. python flask route中装饰器的使用

    问题:route中的装饰器为什么感觉和平时使用的不太一样,装饰器带参数和不太参数有什么区别?被修饰的函数带参数和不带参数有什么区别? 测试1:装饰器不带参数,被修饰的函数也不带参数. def log( ...