HybridCLR 最佳实践,老项目集成热更(战棋项目)

news2024/11/13 12:10:54

文本介绍了老项目使用HybridCLR 集成热更的过程
从项目结构调整,代码调整,打包,热更测试,跑完HybridCLR所有流程
先看效果(安卓)
源码及资料领取方式私信:领取资料:HybridCLR战棋热更源码
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

采用战棋框架作为讲解素材
因为它包含了商业游戏的常见业务,比如(战斗,技能,AI,UI,资源管理,A星寻路系统等常用功能)

项目功能越复杂,集成的过程更有参考意义

了解AOT和热更代码

根据业务需求变化频率,一般可分为2个部分
变化频率低的通用业务
变化频率高的游戏业务

热更业务,所属目录(HotUpdate)
战斗,技能,UI,AI,流程控制。

通用业务(AOT),所属目录(ThirdParty)
资源管理模块(JAssetBundleMgr),负责资源的加载和下载更新,加解密(具体可以查阅往期的视频)
A星寻路库(AStarPathFinding),负责游戏路径的计算
对象池管理库(PathologicalGames)

基本可以认为这些模块是不会改动的,是稳定的
也可以理解为HybridCLR提及的AOT代码

资源更新对比实现,需要放在AOT
在这里插入图片描述

项目工程结构
在这里插入图片描述

入口

文件对比更新完毕后的回调,在这里加载热更代码的dll文件
之前用的是ILRUNTIME,这个版本使用hybridclr
原有的热更代码作为保留参考和对比

在这里插入图片描述
由Enrty.Start(),添加游戏组件GameRoot,由它初始化游戏
(在官方demo里多加了一行代码完成游戏吃初始化)
在这里插入图片描述

部分代码差异

集成了hybridCLR之后改后改回unity3d内置的API写法

订阅开始按钮点击事件
在这里插入图片描述

部分代码差异->部分代码差异
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置预制体脚本
支持挂载组件
在这里插入图片描述

集成中遇到哪些问题处理的时间花了比较长?

第三方插件,比如,A*插件
因为第三方插件不需要热更,所以放在了AOT
因为热更代码是不能包含编辑器代码的
所以要分离Editor和运行时的代码

整理AOT目录和热更目录

这里的方法是把所有第三方工具放到同一目录,分离EDITOR代码到其他目录
在这里插入图片描述

在这里插入图片描述

热更代码丢失AOT引用


在这里插入图片描述
热更程序集引用三方类库
在这里插入图片描述
热更程序集缺少引用,因为项目使用了A*插件,并且划分在了AOT程序内,所以热更程序集需要声明引用了第三方的程序集
在这里插入图片描述

打包流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打包即可

热更流程

修改代码,生成热更dll
在这里插入图片描述
覆盖版本库里的文件
在这里插入图片描述
在这里插入图片描述
拷贝到资源服务器即可
填写资源服IP

在这里插入图片描述

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

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

相关文章

2023亚马逊云科技中国峰会引领无服务器架构新潮流:Serverlesspresso Workshop

序言 在今年3月,我有幸接触了一个项目,也因此结识了 亚马逊云科技无服务器架构 Serverless。在陆续了解 Amazon 产品的过程中,我逐渐发现它所带给我的惊喜远远超出了最初的预期。 今天,想向大家介绍一个名为 Serverlesspresso Wor…

京东数据分析:2023年Q1京东奶粉品牌销量排行榜

近几年我国新生人口数量不断下降。尽管国家大力推进多胎政策,但奶粉的市场需求量依然有明显下滑,导致国内奶粉行业的发展低迷,今年Q1依然没有回弹的迹象。 根据鲸参谋数据显示,今年Q1奶粉在京东平台销量2000万件,同比下…

自学网络安全(白帽黑客)必看!OWASP十大漏洞解析!

在学习网络安全之前,需要总体了解安全趋势和常见的Web漏洞,在这里我首推了解OWASP,因为它代表着业内Web安全漏洞的趋势; 目录 一、OWASP简介 OWASP Top 10: 2013版至2017版改变了哪些内容 二、OWASP Top 10 A1:注入漏洞 A2:…

【C语言】整,浮点型数据存储,大小端。细节拉满!!

目录 一. 整型 1. C语言内置整型家族 类型的意义: 2.整型在内存如何存储的呢? 3. 原码,反码, 补码 原码 反码 补码 4. 当 整型遇上unsigned 会发生什么呢? 1. unsigned 与 signed 解析 2. printf 输出 有无…

Kafka学习---1、Kafka 概述、Kafka快速入门

1、Kafka概述 1.1 定义 1、Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要是应用于大数据实时处理领域。 2、发布/订阅:消息的发布者不会将信息直接发送给特定的订阅者,而是将发布的信息分…

【Linux 学习 ①】- Linux 环境搭建

目录 一、GouMai 云服务器 二、使用 Xshell 远程登录服务器 三、编写一个 C 程序 四、多用户共享同一个服务器 一、GouMai 云服务器 我们以腾讯云为例(购买其他厂商的云服务器,例如:华为云、阿里云,其操作也是类似的&#…

Java集成开发环选择与Eclipse初始常用配置

开发工具的选择 Eclipse 、Idea是最常用的两个Java开发工具,虽然Idea相比前者更易用,但由于其价格昂贵,且由于整体市场经济环境的猥琐,导致各公司开始打击盗版软件,以此来增加收入。 基于以上背景,还是建议…

Kamrada operator:新一代的 Karmada 管理方式

Karmada operator 是 Karmada 社区推出的新组件,它为用户提供了全新的 Karmada 生命周期管理的方式。用户可以在全局集群之上集中式来管理多个 Karmada,通过 CR 资源来控制 Karmada 的创建、升级和卸载。为用户运维和管理 Karmada 提供了极大的便捷。本文…

12个经典性能测试人员面试题

1、性能测试包含了哪些软件测试(至少举出3种)? 参考答案:负载测试;压力测试;容量测试;负载测试(Load Testing):负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如…

如何在 Jupyter Notebook 用一行代码启动 Milvus?

随着各种大语言模型(LLM)的涌现和 AI 技术变得越来越普遍,大家对于向量数据库的需求也变得越来越多。作为大模型的记忆体,向量数据库不仅可以帮助解决 LLM 面临的最大问题——缺乏特定领域知识和最新数据,还可以赋能相…

【数据结构】查找(一)

因为时间关系(现阶段来不及),先不学红黑树和B树,所以这是查找(一)。 先写一下二分查找,数据结构数上叫的“折半查找”。 二分查找 左闭右闭区间 左闭右开区间 下面依旧是对王道书上选择题的一…

突破竞争壁垒:独立站如何实现有效的品牌差异化?

在当今竞争激烈的电商市场中,独立站已经成为了越来越多品牌的选择。然而,要想在这个竞争激烈的环境中脱颖而出,建立起独特的品牌差异化是至关重要的。品牌差异化是一种战略方法,旨在突出品牌在市场上的独特性和独有价值&#xff0…

Java阶段四Day02

Java阶段四Day02 文章目录 Java阶段四Day02VueCli嵌套路由总结项目开发开发流程关于项目项目分析数据库的设计规范(基于阿里巴巴Java开发手册)数据库表设计创建项目关于依赖项关于<build>报错 VueCli嵌套路由 由于Vue Cli工程是单页面的&#xff0c;为了保证能显示各式各…

如何实现不同服务器之间 大规模数据同步?

随着企业结构分散化的不断扩大&#xff0c;企业的数据中心、服务器节点、异地分支机构之间&#xff0c;会存在多种文件交换场景。传统的FTP、rsync、网盘等传输方式在数据体量较小、时效性要求不高的情况下&#xff0c;基本也可以满足需求。 但随着数量爆发式增长&#xff0c;需…

大二下学期期末总结

文章目录 针对学习方面大学生就业指导与创业教育数据结构Java企业级开发大数据实时处理大数据可视化服务器技术 针对生活方面针对课外活动方面 针对学习方面 大学生就业指导与创业教育 这门课很好的帮我们分析了目前的就业形势&#xff0c;预测了未来的就业前景&#xff0c;为…

庆祝牛学长4周年!精彩折扣活动等你来享!

值此周年庆之际&#xff0c;我们衷心感谢您对我们的支持与信任。为了回馈广大用户的厚爱&#xff0c;我们特别推出一系列令人振奋的打折活动&#xff0c;让您在软件购买和使用过程中获得更多实惠和便利。 活动时间&#xff1a;从即日起&#xff0c;至2023年6月26日 活动链接&…

接口测试开发之:一篇搞懂 Cache、Cookie及Session。

目录 1、引言 2、Cache 2.1 缓存定义 2.1.1 缓存概念 2.1.2 缓存优点 2.2 浏览器缓存 2.2.1 存储路径 2.2.2 缓存优点 2.2.3 缓存弊端 2.2.4 原理图 2.3 代理缓存 2.3.1 原理 2.3.2 应用场景 2.3.3 原理图 2.4 网关缓存 2.4.1 原理 2.4.2 缓存分类 2.4.3 缓存…

uniapp uview2.0 其中u--textarea组件无法换行,换行无效问题解决方案

最终发现是因为默认值的问题&#xff0c;uniapp和uview的官方文档写的confirmType的默认值都是done&#xff0c;但是uniapp的textarea在没有配置的情况下是没有值的&#xff0c;uview给加了一个默认值done&#xff0c;就出现了无法返回的问题&#xff0c;尝试了将uview的textar…

qt样式表qss选择器

目录 1、通用选择器 2、类型选择器&#xff08;类和子类&#xff09; 3、类选择器 4、ID选择器 5、子孙后代控件选择器 6、子后代控件选择器 7、属性选择器 7.1 静态属性 7.2 动态属性 8、子控件选择 9、伪状态选择 在开始之前&#xff0c;先要区分3个概念&#xff1…

Android MediaPlayer多次Seek产生杂音优化

前言 MediaPlayer 作为Android自带的Player目前还是存在很多不好使用问题&#xff0c;但实际开发中&#xff0c;还是有不少使用场景&#xff0c;本文针对多次seek产生杂音的问题进行分析讨论&#xff0c;自己遇到了进行记录&#xff0c;目前底层也不好解决和轻易改动原生代码&…