码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Unity 热更--AssetBundle学习笔记 0.7


    合集 - Unity学习笔记(19)
    1.Unity学习笔记--基础2023-11-012.Unity学习笔记--入门2023-10-293.Unity学习笔记--数据持久化之PlayerPrefs的使用2023-11-194.Unity学习笔记--数据持久化XML文件(1)2023-11-205.Unity学习笔记--数据持久化XML文件(2)2023-12-016.Unity学习笔记--数据持久化Json2023-12-037.NGUI学习笔记(1)03-018.NGUI学习笔记203-039.NGUI学习笔记3.503-0510.NGUI学习笔记4.003-06
    11.Unity 热更--AssetBundle学习笔记 0.705-01
    12.Unity 热更--AssetBundle学习笔记 0.805-0213.Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】05-0314.[2]自定义Lua解析方式05-0615.Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本05-0716.自定义Lua解析器管理器-------演化脚本V0.505-0817.使用自定义委托来调用Lua中的多返回值和长参数类型函数05-0918.使用自定义lua解析管理器调用lua脚本中的table05-1019.Lua热更学习--使用toLua中的协程05-12
    收起

    AssetBundle

    AB包是什么?

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

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

    AB包的优势有哪些?

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

    AB包与Resources的比较?

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

    image-20240501205016476

    AB包的特点与要求

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

    AB包打包实操

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

      img

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

    img

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

    image-20240501210647890

    img

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

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

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

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

    image-20240501212511657

    加载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();
    }
    void Start()
    {
    GameObject cube = ab.LoadAsset("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);
    }
    }
    }
    }
  • 相关阅读:
    网页一直跳转到国家反诈中心页面
    为什么不建议给MySQL设置Null值?《死磕MySQL系列 十八》
    PV操作经典问题通解
    数据密集型应用中的数据模型与数据语言
    使用二分法来解决的问题
    UE4 TextRender显示中文方法
    Docker Harbor 私有镜像仓库的部署和管理
    Hadoop学习总结(搭建Hadoop集群(完全分布式模式))
    NoSQL数据库使用场景以及架构介绍
    【1990年-2022年】地级市人均GDP数据集(excel+shp)
  • 原文地址:https://www.cnblogs.com/TonyCode/p/18169831
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号