【Unity】 HTFramework框架(五十四)Deployment 轻量级资源部署管线

news2024/11/13 11:08:12

更新日期:2024年7月31日。
Github源码:[点我获取源码]

索引

  • Deployment 轻量级资源部署管线
  • 使用 Deployment
    • 一、创建部署配置
    • 二、编辑部署配置
    • 三、正式开始资源部署
      • 步骤一:资源打包
      • 步骤二:资源版本构建
      • 步骤三:资源版本部署
      • 步骤四:资源版本更新
    • 四、资源下载的实时信息

Deployment 轻量级资源部署管线

Deployment为轻量级资源部署管线,整合资源打包、资源版本构建、资源版本更新为一体,快速实现资源部署和交付游戏。

使用 Deployment

Deployment为可选模块,将其添加到项目中(Assets/HTFrameworkDeployment)后,需同时结合HybridCLR代码热更新,以实现整体的资源热更新。

Deployment资源热更新可拆分为如下几个步骤:

1.[Editor] 资源打包(打AB包,编译热更程序集);
2.[Editor] 资源版本构建;
3.[Editor] 资源版本部署(部署至资源服务器);
4.[Runtime] 资源版本更新。

一、创建部署配置

在场景中使用如下快捷菜单创建部署配置DeploymentConfig

在这里插入图片描述

创建完成后如下(必须先引入框架主环境HTFramework):

在这里插入图片描述

DeploymentConfig在这里即代表了一个资源部署管线的总体配置,可以为不同的场景设置不同的配置,但理论情况下一个Project应当只存在一种资源部署策略。

二、编辑部署配置

在这里插入图片描述

部署配置面板参数详解:

  • 1.Download File Helper资源下载助手,在资源版本更新阶段,下载资源前做出自定义处理,比如远端资源服务器存在鉴权机制的话,在这里实现权限认证。
  • 2.Local Resource Path本地资源加载根路径,在资源版本更新阶段,从远端资源服务器下载资源时的存放路径,也会同步设置为AB包加载根路径(Main.m_Resource.SetAssetBundlePath),建议设置在Application.persistentDataPath路径之下。
  • 3.Build Resource Path资源版本构建根路径,顾名思义,用于存储我们构建的所有的资源版本,以资源版本号作为子文件夹区分。
  • 4.Remote Resource Path远端资源服务器根路径,一般为Web文件服务器、CDN服务器等,用于存放我们最新版本的资源,也可以是任意版本,前端运行时均会更新至该版本。
  • 5.Build New Deployment Version构建一个新的资源版本(绿色属性均为编辑器专有),以Version为当前版本号,需注意,如果当前版本为已存在的版本,则会被覆盖。

注意:每一个版本的资源,都包含能够使游戏运行的所有AB包资源和热更新程序集。

三、正式开始资源部署

步骤一:资源打包

对AB资源进行打包,比如使用AssetBundleBrowser(打包输出路径随意,平台必须为当前游戏目标平台):

在这里插入图片描述

热更新程序集进行编译,比如使用HybridCLR

在这里插入图片描述

需注意,所有热更新程序集名称、所有补充元数据程序集名称,必须添加到Main检视面板:

在这里插入图片描述

到这里,资源打包工作便完成了。

步骤二:资源版本构建

点击DeploymentConfig检视面板的按钮Build vxxx,构建一个新的资源版本,构建成功后,在Console点击资源版本的链接即可打开该版本文件夹:

在这里插入图片描述

资源版本文件说明如下:

在这里插入图片描述

资源版本构建程序会自动搜索AB包、热更程序集、补充元数据等,理论上不需要人为改动其中任何东西,特别是版本信息文件,因为其中会记录每个资源文件的校验码等信息,是作为资源版本更新时实现增量更新的关键。

当我们有新的资源版本被构建时,在这里是能够回顾所有构建版本的:

在这里插入图片描述

步骤三:资源版本部署

使用自己的方式将最新的资源版本(或者你想要前端使用的任意版本)拷贝到远端资源服务器上,放在部署配置时设置的Remote Resource Path路径下,切记不要直接拷贝版本号文件夹(比如v1.0.0),而是拷贝其中的所有文件

步骤四:资源版本更新

完成以上三个步骤,我们的资源版本已经完成了部署,接下来只需在游戏程序的运行时更新资源即可,尽量在执行任一业务逻辑代码之前。

不过,由于启用了HybridCLR后框架会首先进入静默状态,此时所有逻辑代码都还未执行,所以很方便完成资源更新:

			//进行资源版本更新
            yield return DeploymentConfig.Current.UpdateResource((info) =>
            {
                //更新中回调......
                //info 为资源下载信息,稍后讲解其中的参数
            });

			UpdateResourceDownloadInfo info = DeploymentConfig.Current.DownloadInfo;
			//资源更新完成
            if (info.IsDone)
            {
                if (info.DownloadResult == UpdateResourceDownloadInfo.Result.Success)
                {
                    //资源更新成功
                }
                else
                {
                	//资源更新出错,info.Error 为错误描述
                }
            }

很显然,我们只需要调用一个入口方法UpdateResource即可完成资源版本更新、HybridCLR补充元数据、HybridCLR热更新程序集加载等一系列热更流程。

且下载资源文件时,会比对校验码,只下载发生变化的资源文件。

不过需注意,在UpdateResource方法下载资源的过程中,只要出现一个资源下载失败,就会造成整体流程失败,需重新调用UpdateResource方法再次下载,不过请放心,上一次已下载的文件不会重复下载。

到此,确保资源更新成功后,会自动解除框架的静默状态,游戏程序会正确的进入生命周期,资源热更新流程结束。

四、资源下载的实时信息

我们可以通过监控资源下载的实时信息(UpdateResourceDownloadInfo),以完成一些自定义行为,比如显示下载进度、下载速度、下载耗时等。

资源下载的实时信息(UpdateResourceDownloadInfo)类详解:

  • 1.IsDone:整体资源热更新流程是否完成。
  • 2.DownloadResult:下载状态,以此判断资源热更新是否成功。
  • 3.Error:如果下载资源出错,此为错误信息。
  • 4.DownloadVersion:下载的资源版本号。
  • 5.TotalDownloadFileNumber:需要下载的文件数量。
  • 6.DownloadedFileNumber:已下载的文件数量。
  • 7.TotalDownloadFileSize:需要下载的文件总大小(单位:KB)。
  • 8.DownloadedFileSize:已下载的文件总大小(单位:KB)。
  • 9.DownloadedTime:已下载持续时长(单位:s)。
  • 10.DownloadedSpeed:实时下载速度(单位:KB/s)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1965348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 初步认识

目录 1. 概述 2. 数据结构 3. 使用方式 4. 优势 1. 概述 Redis (remote directory server)是一个开源的基于内存的数据存储系统; 可以用作数据库缓存和消息队列等各种场景,也是目前最热门的 NoSQL 数据库之一; 早…

java算法递归算法练习-数组之和

简单找个题目练习一下递归算法,输入一组数组,使用递归的方法计算数组之和。其实这个题目,用循环的方式也很简单就能解决,直接循环遍历一下相加就行了,但是我们用来练习一下递归。 先来找基线条件和递归条件 基线条件…

Stable Diffusion AI 绘画 之 ControlNet 插件及其对应模型的下载安装

一、介绍 ControlNet: ControlNet是一种通过添加附加条件来控制扩散模型(例如Stable Diffusion)的神经网络结构。一般的使用方法是结合Stable Diffusion来做到精准控图。 通过上面的方式,ControlNet 可以重用SD编码器作为一个深度&#xff0…

企业版邮箱如何提升效率

企业邮箱是如何提升企业效率的呢?企业版邮箱通过专业形象、安全性、稳定性、集成能力等优势提升效率,支持高效内部沟通、团队协作、客户关系管理、安全性与合规性,并支持远程工作,是企业必备的高效工具。 一、企业版邮箱的基本功…

【通俗理解】神经网络动力学——从梯度下降到拓扑结构的桥梁

【通俗理解】神经网络动力学——从梯度下降到拓扑结构的桥梁 神经网络与动力学的类比 你可以把神经网络看作是一个“城市”,其中的神经元是“居民”,他们通过连接(道路)交互。而动力学则是一个“交通分析师”,它研究居…

【MySQL】事务 【下】{重点了解读-写 4个记录隐藏列字段 undo log日志 模拟MVCC Read View sel}

文章目录 1.MVCC数据库并发的场景重点了解 读-写4个记录隐藏列字段 2.理解事务undo log日志mysql日志简介 模拟MVCC 3.Read Viewselect lock in share modeMVCC流程RR与RC 1.MVCC MVCC(Multi-Version Concurrency Control,多版本并发控制)是…

typora简单使用教程

一、下载安装typora Typora是一款流行的Markdown文本编辑器,作者是按照这篇文章完成了typora的下载和安装的:http://t.csdnimg.cn/D2U1U 二、偏好设置 进入界面,点击“文件”,点击“偏好设置”。 三、基本使用 作者是跟着这个…

如何解决 hCaptcha:全面指南

hCaptcha 是一种注重隐私的验证码服务,因其有效性和独特的挑战而广受欢迎。值得注意的是,hCaptcha 具有一定的技术复杂性。本指南将探讨 hCaptcha 的特性,并提供自动化解决方法。 什么是 hCaptcha 及其挑战 hCaptcha 以其基于图像的挑战而闻…

mysql--表的基本操作(curd)

一,表的创建 语法: 如果创建表没有指定字符集存储引擎,默认是继承表所在的数据库的。 修改表的字段 (1)增加 ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...); (2&am…

MoE:混合专家模型介绍(一)

MoE:混合专家模型介绍(一) 本文是对混合专家模型 (MoE) 详解重点摘要与归纳,有兴趣的小伙伴可以点击链接阅读原文。 混合专家模型 (MoEs)特点 与稠密模型相比,预训练速度更快与具有相同参数数量的模型相比&#xff…

Linux之重定向和缓冲区详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 C进阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.重定向 1.1stat接口 1.1.1利用stat查看文件大小…

添加缓存的相关策略以及缓存的主动更新

目录 添加缓存 代码实现 主动更新缓存 先删缓存在操作数据库 数据一致 数据不一致 先操作数据库在删除缓存 数据一致 数据不一致 总结 添加缓存 代码实现 public Shop queryWithPassThtough(Long id){ //先从redis中查询缓存 String object stringRedisTemplate.opsFor…

《零散知识点 · SpringBoot Starter》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

开放式耳机音质上不如入耳式耳机?高性价比开放式耳机推荐大赏

这可不一定! 开放式耳机在音质上并不一定就比传统的入耳式耳机差。 首先,音质的好坏不能仅仅根据耳机的类型来判断。开放式耳机在声音的开放性和自然度方面往往具有优势。它们能够提供更宽广的音场,让声音有一种自然扩散的感觉,使…

『 Linux 』线程同步问题与条件变量

文章目录 同步问题条件变量条件变量的使用条件变量的条件检查与线程唤醒生产者-消费者模型 同步问题 同步问题是保证数据安全的情况下,使多线程在访问同一资源时具有一定顺序性; #define NUM 5int g_val 700;class threadData {public:threadData(const int number, pthread_…

linux常使用的命令

关机命令 shutdown halt poweroff reboot grep 选项 参数 -l 显示所有包含关键字的文件名 -n 在匹配之前加上行号 -c 只显示匹配的行数 -v 显示不匹配的行 管道符 “|” 左边的输出作为右边的输入 例如:我们找个文件包含abc 但是不含有def的文件 grep …

Adobe Acrobat DC 2021版安装教程【超简单、超详细】

Adobe Acrobat DC 是 Adobe 提供的一款专业 PDF 解决方案,具有许多强大的功能,可以满足各种文档处理需求。 注意事项:①下载与激活过程中一定要关闭杀毒软件 ②提供的所有软件都是永久版的 ③软件仅供学习下载使用,不可用于商业用…

C++ 右值 左值引用

一.什么是左值引用 右值引用 1.左值引用 左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址可以对它赋值。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左…

环境如何搭建部署Nacos

这里我使用的是Centos7, Nacos 依赖 Java环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用 ## 1、下载安装JDK wget https://download.oracle.com/java/17/latest/jdk-17_linux-x6…

知识文库杂志知识文库杂志社知识文库编辑部2024年第12期目录

文艺理论 现代高校书院对中国传统书院学术精神的汲取与转化 李奥楠;时新洁; 1-4 个案工作介入高中美术艺考生及家长心理调适的应用研究 魏星; 5-8《知识文库》投稿:cn7kantougao163.com 中华优秀传统文化视角下高校美育课程实践教学 李丛丛; 9-12 基…