AssetBundle

AB包是什么?

AssetBundle又称AB包,是Unity提供的一种用于存储资源的资源压缩包

Unity中的AssetBundle系统是对资源管理的一种扩展,通过将资源分布在不同的AB包中可以最大程度地减少运行时的内存压力,可以动态地加载和卸载AB包,继而有选择地加载内容。

AB包的优势有哪些?

  1. AB包的存储位置自定义。可以放入可读可写的路径下便于实现热更。
  2. 可以自定义压缩方式。对于压缩方式可以选择不压缩或者LZMA和LZ4等不同的压缩方式压缩,满足不同的网络传输需求。
  3. 资源可以分布在不同的AB包体中,可以最大程度减少运行时候的内存压力,做到即用即加载,针对性的加载。
  4. AB包支持后期进行动态更新。支持热更,可以显著减小初始安装包的大小,非必要的核心关卡可以跟随用户闯关进度来进行资源下载,提高用户的体验。

AB包与Resources的比较?

AB包 Resource
资源可分布在多个包中 所有资源打成一个大包
存储位置可自定义 必须放在Resources目录下
压缩方式灵活 资源全部压缩成二进制
支持后期进行动态更新 打包后资源只读无法动态更改

AB包的特点与要求

  1. AB包无法直接存储C#脚本。代码的热更需要使用lua这类脚本语言,或者存储编译后的DLL文件。
  2. AB包不能重复进行加载。AB包已经加载进内存后必须卸载后才能重新加载。
  3. AB包之间是存在依赖关系的,在加载当前AB包时需要一并加载其所依赖的包。
  4. 打包完成后,会自动生成一个主包(主包名称随平台不同而不同),主包的manifest下会存储有版本号、校验码(CRC)、所有其它包的相关信息(名称、依赖关系)

AB包打包实操

  1. 下载导入Asset Bundles 资源包 【】

  2. 将需要打包的资源进行分组分类

  1. 打开AssetBundle 打包窗口进行设置 Build 出包

AB包的文件内容分为两类:

一类是资源文件(无后缀名称的)

另一类为mainfest文件 存储AB包体的信息和加载时候所需的关键信息、资源信息、版本信息、依赖关系等等

关键AB包(与目录名同名)为主包 和 AB包依赖的关键信息

加载AB包中的资源

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
namespace LearnAssetBundle
{
public class LoadAsset : MonoBehaviour
{
private AssetBundle ab;
private Image _image; private void Awake()
{
//获取AB包 打包的文件已经拷贝到streamingAssets文件下 从此位置加载
//注意!AB包不能重复加载
ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath +"/"+"model");
_image = GameObject.Find("Canvas/Image").GetComponent<Image>(); }
void Start()
{
GameObject cube = ab.LoadAsset<GameObject>("cube");
Instantiate(cube); //使用异步加载图片资源
StartCoroutine(LoadPicRes("pic", "bk")); //释放掉 true 包括场景中的资源
ab.Unload(false);
} private IEnumerator LoadPicRes(string AbName, string picName)
{
AssetBundleCreateRequest picAb = AssetBundle.LoadFromFileAsync(Application.streamingAssetsPath + "/" + AbName); AssetBundleRequest abERes = picAb.assetBundle.LoadAssetAsync(picName, typeof(Sprite)); yield return abERes; _image.sprite = abERes.asset as Sprite; }
void Update()
{
//AB包资源的卸载
if (Input.GetKeyDown(KeyCode.Space))
{
//卸载所有加载的AB包
// true 包括场景中正在使用的资源 谨慎使用
// false 仅卸载ab包的资源 场景中的资源不受影响
AssetBundle.UnloadAllAssetBundles(false);
}
}
}
}

Unity 热更--AssetBundle学习笔记 0.7的更多相关文章

  1. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

  2. ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

    放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...

  3. Unity(IOC)学习笔记

    原文:Unity(IOC)学习笔记 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/79432 ...

  4. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

  5. boost 学习笔记 0: 安装环境

    boost 学习笔记 0: 安装环境 最完整的教程 http://einverne.github.io/post/2015/12/boost-learning-note-0.html Linux 自动 ...

  6. JavaScript学习笔记[0]

    JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...

  7. Unity Shader序列帧动画学习笔记

    Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...

  8. 热更新基础--AssetBundle学习笔记

    一.简介 AssetBundle简称AB包,特定平台的资产压缩包(包括模型.贴图.预设体.音效.材质球等资产). 作用:Resources下的资源只读且打包后不可修改,而AB包存储位置自定,后期可以动 ...

  9. 热更新应用--热补丁Hotfix学习笔记

    一.热补丁简介 热补丁主要是用于将纯C#工程在不重做的情况下通过打补丁的形式改造成具备lua热更新功能工程,主要是让原来脚本中Start函数和Update函数等函数代码块重定向到lua代码. 二.第一 ...

  10. Unity热更方案汇总

    http://www.manew.com/thread-114496-1-1.html   谈到目前的代码热更方案:没什么特别的要求   <ignore_js_op>    toLua(效 ...

随机推荐

  1. 运行xxl-job,整合xxl-job至jeecg-boot项目

    1.前言:xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 源码仓库地址:https://gitee.co ...

  2. scala入门输出helloworld

    1 object HelloScala{ 2 def main(args : Array[String]){ 3 println("hello scala") 4 } 5 } He ...

  3. 从 findbugs-maven-plugin 到 spotbugs-maven-plugin 帮你找到代码中的bug

    一.findbugs-maven-plugin 介绍: Status: Since Findbugs is no longer maintained, please use Spotbugs whic ...

  4. 12 JavaScript 关于eval函数

    12 eval函数 eval本身在js里面正常情况下使用的并不多. 但是很多网站会利用eval的特性来完成反爬操作. 我们来看看eval是个什么鬼? 从功能上讲, eval非常简单. 它和python ...

  5. #构造#B 连通子图

    题目 给定正整数\(k\),构造一棵树,使得包含了\(1\)号点的连通子图个数恰好为\(k\). 连通子图就是点集的一个子集(可以为全集),使得该点集中任意两个点均可以经过该点集中的点相互到达. 分析 ...

  6. 【FAQ】HarmonyOS SDK 闭源开放能力 —Scan Kit

    1.问题描述 Scan Kit扫描专用底层码流接口需要鉴权,鉴权失败后功能还能用吗? 解决方案 如果已经申请过白名单,因为异常导致的鉴权失败会优先放通,保障业务成功. 2.问题描述 调用Scan Ki ...

  7. Excel分析师的工资能一直飙升,原因其实是...

    世界上的数据分析师分为使用Excel的分析师和其他分析师两类. 即使在互联网数据分析界,java遍街头,Python不如狗,Excel也是不可替代的. 上班前以为自己是西装笔挺的Excel数据分析师, ...

  8. HarmonyOS Connect认证测试

     原文链接:https://mp.weixin.qq.com/s/zRG97PWPqfDo0vfwQWSUew,点击链接查看更多技术内容:   在HarmonyOS Connect生态产品的认证测试过 ...

  9. Spring Cloud Alibaba 官方实践指南【文章有点长自备咖啡茶点】

    注:本文内容均转自官方文档,方便胖友们学习,不代表博主观点. 链接地址:SpringCloudAlibaba | Spring Cloud Alibaba 基于网关实现 SpringCloud 服务发 ...

  10. orleans —————— 为什么有这个框架 [ 一]

    前言 简单说明一下,为什么有orleans 这个框架. 正文 orleans 这个框架的理论基础是 actor, 在1973年提出,当初是为了大量处理高并发计算机的并行模型,其核心思想是将系统中独立的 ...