【Unity】 HTFramework框架(五十八)【进阶篇】资源及代码热更新实战演示(Deployment + HybridCLR)

更新日期:2025年1月2日。
Github源码:[点我获取源码]

索引

  • 资源及代码热更新实战演示
  • 运行演示Demo
    • 1.克隆项目工程
    • 2.更新子模块
    • 3.打开项目
    • 4.打开入口场景
    • 5.设置远端资源服务器地址
    • 6.导入HybridCLR
    • 7.初始化HybridCLR
    • 8.发布项目
    • 9.部署资源版本
    • 10.运行Exe
    • 11.升级资源版本
    • 12.文件目录说明

资源及代码热更新实战演示

本文会基于Deployment + HybridCLR的方式实现资源及代码热更新的实战演示,两者的使用方法参考之前的文章:
【Unity】 HTFramework框架(五十四)【进阶篇】Deployment 轻量级资源部署管线。
【Unity】 HTFramework框架(五十二)使用 HybridCLR 热更新。

运行演示Demo

1.克隆项目工程

首先,进入本文开头处的源码链接,Clone项目工程到本地:

在这里插入图片描述

2.更新子模块

因为HTFrameworkDeployment模块均是以子模块形式添加进来的,所以必须更新子模块(也叫做初始化子模块):

在这里插入图片描述

3.打开项目

使用Unity 2022.3.34打开此项目。

4.打开入口场景

在这里插入图片描述

5.设置远端资源服务器地址

也即是设置CDN服务器地址(任意一个可访问的远端文件服务器都可),为了达到演示效果,这一点是必须的:

在这里插入图片描述

6.导入HybridCLR

在这里插入图片描述
导入完成后,在Main检视器面板查看,以确保HybridCLR已正确导入:

在这里插入图片描述

7.初始化HybridCLR

点击菜单HybridCLR - Generate - All,以完成HybridCLR的初始化。

在这里插入图片描述

8.发布项目

将项目发布为可执行程序(目前只演示Window平台,其他平台同理):

在这里插入图片描述

9.部署资源版本

BuildResource/v1.0.0版本(事先构建好的版本)的资源部署到CDN服务器(也即是第5步设置的文件服务器地址),作为初始版本:

在这里插入图片描述

10.运行Exe

我们运行HotfixDemo.exe后,首先会弹出资源热更新面板

在这里插入图片描述

解析:
因为目前远端部署的版本为:v1.0.0
本地版本为:(因为是首次运行程序,还未下载任何资源)。
所以会进入资源热更新流程,将远端部署的最新版本下载到本地并覆盖。

点击确定,更新资源完成后,进入程序首页,可以看到当前的资源版本已升级到v1.0.0

在这里插入图片描述

接下来退出此程序。

11.升级资源版本

BuildResource/v2.0.0版本(事先构建好的版本)的资源部署到CDN服务器(也即是第5步设置的文件服务器地址),覆盖之前的v1.0.0版本:

在这里插入图片描述

v2.0.0版本在代码中修改了登录界面按钮上的文字,之前是登录 v1.0.0,现在是登录 v2.0.0

    /// <summary>/// 登录界面/// </summary>[UIResource("ui", "Assets/Source_Hotfix/Prefabs/LoginPanel.prefab", "LoginPanel")]public class UILogin : UILogicResident{protected override bool IsAutomate => false;/// <summary>/// 初始化/// </summary>public override void OnInit(){base.OnInit();UIEntity.FindChildren("LoginButton").rectTransform().AddEventListener(OnLogin);}public override void OnOpen(params object[] args){base.OnOpen(args);UIEntity.FindChildren("Txt_Version").GetComponent<Text>().text = "当前资源版本:" + DeploymentConfig.Current.LocalVersion.Version;UIEntity.FindChildren("LoginButton/Text").GetComponent<Text>().text = "登录 v2.0.0";}private void OnLogin(){Main.m_Procedure.SwitchProcedure<ChooseProcedure>();}}

我们再次运行HotfixDemo.exe后,依然会弹出资源热更新面板

在这里插入图片描述

解析:
因为目前远端部署的版本为:v2.0.0
本地版本为:v1.0.0(版本不匹配)。
所以会进入资源热更新流程,将远端部署的最新版本下载到本地并覆盖。
注意:之所以下载文件只有一个,因为我们只改动了一个脚本,所有脚本会编译为一个热更程序集,所以只需要下载该热更程序集

点击确定,更新资源完成后,进入程序首页,可以看到当前的资源版本已升级到v2.0.0

在这里插入图片描述

我们没有重新发布可执行程序,那么资源及代码的热更新流程便完成了演示。

当然,如果你想测试自行构建资源版本,按照Deployment的标准操作流程走一遍即可。

注意:预制体等打入AB包的文件没有改动的情况下,不要重新打AB包,代码没有改动的情况下,不要重新生成热更程序集,以保持每个版本最少的下载量。

12.文件目录说明

在这里插入图片描述

AssetBundles:打AB包的输出目录,原则上不用干涉,Deployment构建时会自动提取里面的AB包资源。
BuildResource:资源版本构建的输出目录,里面存放了资源版本构建的所有历史版本,目前预构建了v1.0.0v2.0.0两个版本。

在这里插入图片描述

Source:主程序资源目录,会随主程序构建出去的目录,目前只有一个脚本ResourceUpdater,该脚本负责调用Deployment完成资源更新(详细业务逻辑请参阅源码)。
Source_Hotfix:热更新资源目录,其中的资源会打入AB包,脚本会打入热更程序集,如果他们产生了变化,就意味着资源版本升级了,需根据情况重打AB包,重新生成热更程序集,并在DeploymentConfig面板构建此版本,然后再上传到CDN服务器完成部署。

在这里插入图片描述

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

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

相关文章

SpringCloud源码分析-nacos与eureka

一、高版本为什么优先用nacos 如果用alibaba springcloud&#xff0c;那么就是阿里的技术体系。nacos属于阿里的原生技术栈&#xff0c;所以阿里更偏向于用nacos作为服务发现注册。 二、对比分析 Spring Cloud Alibaba 推荐使用 Nacos 作为服务发现和配置管理的首选组件&…

(五)人工智能进阶:基础概念解释

前面我们介绍了人工智能是如何成为一个强大函数。接下来&#xff0c;搞清损失函数、优化方法和正则化等核心概念&#xff0c;才能真正驾驭它&#xff01; 1. 什么是网络模型&#xff1f; 网络模型就像是一个精密的流水线工厂&#xff0c;由多个车间&#xff08;层&#xff0…

级联配准learning

1.定义 级联配准&#xff08;Cascade Registration&#xff09;是一种在图像处理、计算机视觉等领域广泛应用的技术。它主要用于将不同视角、不同模态或者不同时间获取的图像进行精确的对齐&#xff0c;并且是通过多个阶段&#xff08;级联&#xff09;的处理来逐步优化配准的精…

初学STM32 --- 外部SRAM

SRAM简介 静态随机存取存储器&#xff08;Static Random-Access Memory&#xff0c;SRAM&#xff09; 1M字节容量的SRAM芯片XM8A51216为例介绍。 SRAM特性: 高速&#xff1a;具有最高访问速度15ns 低功耗&#xff1a;80MHz时55mA&#xff0c;待机电流 20mA TTL电平兼容 …

leetcode hot 100 前k个高平元素

347. 前 K 个高频元素 已解答 中等 相关标签 相关企业 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 class Solution(object):def topKFrequent(self, nums, k):""":type nums: Lis…

Zabbix:自动发现功能讲解,包括网络发现、自动注册、低级别自动发现以及案例分享。

ZBX&#xff1a;自动发现功能讲解 视频讲解&#xff1a;Zabbix 自动发现网络发现概述操作方法 自动注册概述操作方法 低级别自动发现概述工作原理及工作流程案例1&#xff0c;base进程监控要求&#xff1a;步骤&#xff1a; 案例2&#xff0c;磁盘IO监控要求&#xff1a;步骤&a…

Windows上安装Go并配置环境变量(图文步骤)

前言 1. 本文主要讲解的是在windows上安装Go语言的环境和配置环境变量&#xff1b; Go语言版本&#xff1a;1.23.2 Windows版本&#xff1a;win11&#xff08;win10通用&#xff09; 下载Go环境 下载go环境&#xff1a;Go下载官网链接(https://golang.google.cn/dl/) 等待…

python3.x支持,但python2.7不支持的语法

python3.x支持,但python2.7不支持的语法 1.属性访问的问题&#xff1a; 你可能是在 params 中直接使用了某个对象的属性&#xff0c;而不是该属性的值。在你提供的信息中&#xff0c;<slot wrapper next of instance objects> 指的是一个对象的槽位&#xff08;slot wra…

开源GTKSystem.Windows.Forms框架:C# Winform跨平台运行深度解析

开源GTKSystem.Windows.Forms框架&#xff1a;C# Winform跨平台运行深度解析 一、跨平台框架的崛起 1.1 跨平台技术的现状与需求 在当今快速发展的科技时代&#xff0c;软件开发的需求日益多样化。随着移动设备和操作系统的不断涌现&#xff0c;开发者面临着前所未有的挑战&…

#端云一体化开发# #HarmonyOS Next#《说书人》鸿蒙原生基于角色的对话式文本编辑开发方案

1、写在前面 过去的一百年里&#xff0c;在“编程”的这个行业诞生之初&#xff0c;人们采用面向过程的方式进行开发&#xff0c;但是&#xff0c;伴随着程序规模的日益增大&#xff0c;程序的复杂度也随之增加&#xff0c;使用结构化编程方法来管理复杂的程序逻辑变得越来越困…

xadmin后台首页增加一个导入数据按钮

xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang

【AimRT】现代机器人通信中间件 AimRT

目录 一、什么是AimRT二、AimRT与ROS22.1 定位与设计2.2 组成与通信方式对比 三、AimRT基本概念3.1 Node、Pkg 和 Module3.2 Protocol、Channel、Rpc 和 Filter3.3 App模式 和 Pkg模式3.4 Executor3.5 Plugin 一、什么是AimRT AimRT 是智元机器人公司自主研发的一款机器人通信…

mysql系列7—Innodb的redolog

背景 本文涉及的内容较为底层&#xff0c;做了解即可&#xff0c;是以前学习《高性能Mysql》和《mysql是怎样运行的》的笔记整理所得。 redolog(后续使用redo日志表示)的核心作用是保证数据库的持久性。 在mysql系列5—Innodb的缓存中介绍过&#xff1a;数据和索引保存在磁盘上…

Swift Combine 学习(二):发布者 Publisher

Swift Combine 学习&#xff08;一&#xff09;&#xff1a;Combine 初印象Swift Combine 学习&#xff08;二&#xff09;&#xff1a;发布者 PublisherSwift Combine 学习&#xff08;三&#xff09;&#xff1a;Subscription和 SubscriberSwift Combine 学习&#xff08;四&…

Win11清除安全中心保护历史记录全攻略

Win11清除安全中心保护历史记录全攻略 在Windows 11操作系统中,安全中心作为守护系统安全的重要防线,扮演着举足轻重的角色。它不仅实时监控系统的安全状态,还详细记录各类安全事件,为用户提供全面的安全保障。然而,随着系统的长期使用,这些安全记录可能会逐渐累积,占用…

C++【内存管理】

C/C中程序的内存划分&#xff1a; 栈&#xff1a;又称堆栈&#xff0c;存放非静态的局部变量、函数参数、返回值等等&#xff0c;栈是向下增长的。内存映射段&#xff1a;是高效的&#xff29;&#xff0f;&#xff2f;映射方式&#xff0c;用于装载一个共享的动态内存库。用户…

手机租赁平台开发助力智能设备租赁新模式

内容概要 手机租赁平台开发&#xff0c;简单说就是让你用得起高大上的智能设备&#xff0c;不管是最新款的手机、平板&#xff0c;还是那些炫酷的智能耳机&#xff0c;这个平台应有尽有。想要体验但又不希望花大钱&#xff1f;那你就找对地方了&#xff01;通过灵活的租赁方案…

Spring Boot 3 文件上传、多文件上传、大文件分片上传、文件流处理以及批量操作

在 Spring Boot 3 中&#xff0c;可以通过内置的文件处理机制结合 Java 的 IO 流与多线程技术&#xff0c;实现文件上传、多文件上传、大文件分片上传、文件流处理以及批量操作的需求。以下是详细实现步骤&#xff1a; 1. 单文件上传 控制器代码 import org.springframework…

【开源免费】基于SpringBoot+Vue.JS校园社团信息管理系统(JAVA毕业设计)

本文项目编号 T 107 &#xff0c;文末自助获取源码 \color{red}{T107&#xff0c;文末自助获取源码} T107&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识

前言 在iOS开发中Keychain 是一个非常安全的存储系统&#xff0c;用于保存敏感信息&#xff0c;如密码、证书、密钥等。与 NSUserDefaults 或文件系统不同&#xff0c;Keychain 提供了更高的安全性&#xff0c;因为它对数据进行了加密&#xff0c;并且只有经过授权的应用程序才…