【热更新】AssetBundle

落花浮王杯 提交于 2019-12-19 16:45:43

* AssetBundle:简称AB包
* 用处:1.ab是一个压缩包:包含模型,贴图,预制体,声音,甚至整个场景,可以在游戏运行的时候加载
* 2.它自身保存着互相依赖的关系
* 3.压缩包:LZMA和LZ4压缩算法,减少包的体积大小,更快的进行网络传输
* 4.把一些可以下载的内容放在AB包里面,可以减少安装包的大小
*
*
* ab包:
* 1.存在于硬盘上的文件,这个压缩包我们可以认为是一个文件夹,然后里面包含了多个文件
* 2.文件分为两类:serialized和resource file(序列化文件和源文件)
* serialized file:资源被打碎后放在一个对象中,最后统一被写进一个单独的文件(只有一个)(只有当程序运行后实例化才可以看得到)
* resource file:某些二进制资源(图片,声音)被单独保存,方便快速加载
*
* AB包使用流程:
* 1.指定资源的ab属性(在unity里面创建一个物体后就可以选择添加属性(xx/yy:xx:生成的目录,yy:名字))
* 2.创建ab包
* 3.上传ab包(打包出来的ab包上传到服务器)
* 4.加载ab包里面的资源
* 如果直接放进包里:缺点:包体积过大,不能热更 xx.ipa xx.apk

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

public class CreatAssetBundle : MonoBehaviour
{
	//unity编辑器拓展-菜单项
    [MenuItem("Asset/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        string dir = "AssetBundles"; //打包后的资源存放路径,在工程目录下,和asset目录平级的
        if (Directory.Exists(dir)==false)
        {
            Directory.CreateDirectory(dir);
        }
       BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.UncompressedAssetBundle, 
       									BuildTarget.StandaloneWindows64);
        //输出路径,打包压缩格式,打包平台
        /*打包ab包只能在editor模式下,打包的apk的时候editor目录下的代码是不会被打包
         * 只要在场景里面指定了ab标签就会去搜索整个project目下的这个标签,找到了就会自动打包
         * Android:图片压缩格式:ETC
         * IOS:图片压缩格式:PVRTC
         * mainfest:这个就是ab包里面的依赖关系清单,这个里面写的是生成那些ab文件
         * 可以在打包的同时进行分类,在进行命名的时候就可以分类:xx/yy:xx:文件夹名,yy:资源名
         * 
         * 打包的压缩格式:
         * BuildAssetBundleOptions.none:使用lzma压缩算法,压缩的包更小,但是加载的时间长,使用之前
         * 需要整体解压,一旦解压之后,这个包会重新使用lz4压缩,使用资源的时候就不需要整体解压,在下
         * 载的时候他会使用lzma算法,一旦下载后,他就会使用lz4算法再次压缩保存到本地
         * BuildAssetBundleOptions.UncompressedAssetBundle:不压缩,但是包大,加载快
         * BuildAssetBundleOptions.ChunkBasedCompression:使用lz4压缩,压缩率没有lzma的高,但是可以加载指定
         * 资源而不用解压全部
         * 
         * 
         * mainfest:
         * CRC:校验码,还有一种MD5 SHA1
         * 相同点:
         * CRC,MD5,SHA1都是通过对数据进行计算,生成一个校验值,这个校验值就是用来校验数据的完整性
         * 不同点:
         * 1.算法不同,CRC采用多项式除法,MD5和SHA1使用的是替换,轮转等方法
         * 2.校验值长度不同。CRC校验位的长度跟其他的多项式有关系,一般是16位或者是32位;MD5是16个字节(128位),SHA1是20个字节(160位)
         * 3.校验值的称呼不同。CRC一般叫做CRC值,MD5和SHA1一般是叫做哈希值或者散列值
         * 4.安全性不同。指的检错能力,即指数据的错误能通过校验位检测出来。
         * 5.效率不同。CRC计算效率最高。MD5和SHA1比较慢
         * 6.用途不同。CRC一般用作通信数据的检验,MD5和SHA1用于安全领域,比如文件校验,数字签名等
         */
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!