文章目录

  • 前提配置
  • 代码实现

前提配置

(1)勾选AddressableAssetSettings设置的Disable Catalog Update On Startup选项

(2)相应的热更戏资源分组配置(注:此文采用的是动态资源更新)
Can Change Post Release:No-Static(全量更新资源,直接替换旧资源)
Cannot Change Post Release:Static(增量更新,不更新旧包资源,直接生成新的资源包)

代码实现

(1)如果本地已经确定好了具体需要热更的资源,可以将需要更新资源的标签记录到本地,每次游戏启动时,做热更新检查,本地系统会对比远程与本地资源的Catalog,不同则更新
(2)有服务器下发热更新资源的名称或标签,同上
(3)暴力热更,获取全部Adressable资源的标签,逐一检车是否需要更新,当然这种方式是不建议的

/// <summary>/// 暴力获取所有Key/// </summary>public void HotUpdate(){IEnumerable<IResourceLocator> locators = Addressables.ResourceLocators;List<object> keys = new List<object>();foreach (var item in locators){foreach (var key in item.Keys){keys.Add(key);Debug.Log("Key:"+key);}}Debug.Log("Keys:" + keys.Count);if (keys.Count > 0)StartCoroutine(CheckForContentUpdate(keys));}

热更新核心代码

/// <summary>/// 检查更新/// </summary>/// <param name="keys">确保Keys内标签都需要热更,否则,所有的Key资源都会被下载,并且删除旧资源时,真实更新key的旧资源不会被删除</param>/// <returns></returns>public IEnumerator CheckForContentUpdate(List<object> keys){for (int index = 0; index < keys.Count; index++){AsyncOperationHandle<long> DownloadSize = Addressables.GetDownloadSizeAsync(keys[index]);yield return DownloadSize;if (DownloadSize.Result <= 0){Debug.Log("没有更新的资源标签:" + keys[index]);keys.Remove(keys[index]);}else{m_TotalSize += DownloadSize.Result / Mathf.Pow(1024, 2);}}if (keys.Count <= 0)yield return null;m_DownLoadKeyList = keys;m_DownloadDependencies = Addressables.DownloadDependenciesAsync(keys, Addressables.MergeMode.Union, false);yield return m_DownloadDependencies;}private void Update(){if (m_DownloadDependencies.IsValid()){if (m_DownloadDependencies.PercentComplete < 1){m_CurAssetSize = m_DownloadDependencies.PercentComplete * m_TotalSize;Debug.Log(m_CurAssetSize + "/" + m_TotalSize);}else if (m_DownloadDependencies.Status == AsyncOperationStatus.Succeeded){m_CurAssetSize = m_DownloadDependencies.PercentComplete * m_TotalSize;Debug.Log(m_CurAssetSize + "/" + m_TotalSize);if (m_DownLoadKeyList.Count > 0){//删除旧资源包,前提Bundle name选择FileName,aa管理AB包名是带Hash的,每个版本的包名都不一致,导致Cache无法区分Addressables.ClearDependencyCacheAsync(m_DownLoadKeyList);}Addressables.Release(m_DownloadDependencies);}}}

Addressable热更新相关推荐

  1. Addressable资源热更新疑问

    1)Addressable资源热更新疑问 ​2)如何解决远处网格线会花的问题 3)关于着色器中某些特殊图片的用途 4)Lightmap在内存中有重复加载 5)Unity Job System问题 这是 ...

  2. Unity通过Addressable + ILRuntime 实现代码和资产的热更新(案例+图文详情+源码)

    Unity通过Addressable + ILRuntime 实现代码和资产的热更新(图文详情+源码) 前言 一.思路概述 二.Unity主工程部分 1.GameLunch的源码 2.ResMgr的源 ...

  3. Unity Addressable学习笔记二(Hosting热更新)

    上篇大致介绍了Addressables系统中的大部分需要用到的按钮文件配置的作用,本篇就在上一篇介绍的基础上来进行一次实际的资源热更测试.Unity版本2019.3 Addressables版本1.8 ...

  4. 极速入门ILRuntime热更新

    极速入门ILRuntime热更新 关于我们 1.认识ILRuntime 2.建立第一个ILRuntime程序 3.ILRuntime源码分析 4.深入ILRuntime热更新原理 5.深入ILRunt ...

  5. 修改html时webpack热更新,webpack学习之路(二)webpack-dev-server实现热更新

    上一章对webpack的配置有了简单的认识. 这一章,我需要学习的是webpack热更新,因为在开发过程中,不希望当文件更改时,人肉去编译文件,刷新浏览器. webpack热更新 webpack-de ...

  6. 苹果禁止使用热更新 iOS开发程序员新转机来临

    今天本是女神们的节日,所有iOS程序员沸腾了!原因是苹果爸爸发狠了,部分iOS开发者收到了苹果的这封警告邮件: [图一 苹果邮件] 消息一出,一时间众多开发者众说纷纭,以下是来源于网络的各种看法: 有 ...

  7. 热更新 FrameWork

    工作中遇到想要绕过AppStore直接更新App的要求!这里友情提示下,看了很多资料只是是实现了功能,但在项目中并没有真正用到!资料大多都显示会被拒,这个说的是个人级的,好像企业级的不会这样,仅仅是项 ...

  8. 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用原型链和EventTrigger

    原型链是JS的必备,作为ECMAScript4,原型链也是支持的. 特别说明,ActionScript3是支持完整的面向对象继承支持的,原型链只在某些非常特殊的情况下使用. 本文旨在介绍如何使用原型链 ...

  9. vue 热更新无反应_不吹不黑谈谈 vue 的 SFC 和 template

    大家好,好久不贱,我是 132,今天给大家带来一篇关于 SFC 的文章 为什么我曾经不看好 SFC 和 template 过去,我一直不看好 SFC 和 template,甚至因为这个观点,还被很多 ...

最新文章

  1. mysql is复制表结构_MySQL复制表结构和内容到另一张表中的SQL语句
  2. 妙啊,边玩游戏边学强化学习
  3. JS实现网易云轮播效果图
  4. UVa 1354 天平难题 枚举二叉树
  5. CF248E Piglet's Birthday(概率dp)
  6. css3-background clip 和background origin
  7. 如何理解 Spring AOP 以及使用 AspectJ?
  8. 上下相机贴合对位计算公式_ccd视觉自动对位贴合机主要应用在哪里?
  9. Qt 识别 DM 码
  10. vue和js点击下载pdf,word,png,jpg等格式的文件,解决点击下载pdf却是打开预览的问题
  11. 给老年人“种草”,是不是一门好生意?
  12. win10系统word2019显示目录只显示部分一级二级解决办法
  13. 南昌大学计算机学院夏令营,南昌大学关于举办2021年优秀大学生暑期夏令营活动的通知...
  14. java开发微信公众号(SpringMVC)2-消息管理功能
  15. sap crm行业解决方案_培训机构行业crm系统解决方案
  16. U盘里的文件都变成了.exe文件
  17. html结合css样式作用,css样式表可以实现什么功能?
  18. 四步教你破解隔壁老王的Wi-Fi密码,蹭网没商量!
  19. 客运公司运输管理系统(简易版)
  20. 我要大学答案———小程序开发指南 课后习题答案|实验报告|考研资料|期末真题的答案

热门文章

  1. 病毒下载器利用搜索引擎广告推广,推装超过30款软件
  2. Excel 撤消工作表保护密码
  3. 贝壳云php源码,贝壳云P1刷Armbian系统后的折腾笔记
  4. android指南针校准 代码_Android指南针app的实现原理总结
  5. Visual Studio 2017项目进行打包并附加.net框架打包,菜鸟级安装教程
  6. App inventor成语接龙单机游戏
  7. css-浮动布局与样式规则
  8. VSCode 壁纸插件 背景播放视频插件
  9. android语音控制歌曲播放,发条 - 支持音乐聚合搜索,歌单导入,语音控制的 APP - Android 应用 - 【最美应用】...
  10. 软件测试周刊(第61期):内心强大的人都有三个共性「不和他人作比较」「不对他人有期待」「不批判他人」