u3d 代码热更解决方案 ILruntime

在这里插入图片描述

安装输出helloWorld
点击观看视频

基于ilruntime实现MonoBehaviour 行为

视频观看地址

热更程序集里拥有MonoBehaviour 能力

方法一: 继承MonoBehaviour
因为MonoBehaviour隶属主程序集,热更程序集 继承 主程序集 属于 跨域继承.
缺点:
运行性能低,而且需要编写接口适配,无论是性能和开发效率都不具备优势,且官方也不推荐这么做。所以不采用

方法二:自行架构
主工程 适配器
HotFixMonoBehaviourAdapter(通过字符串实例化热更对象,并且调用生命周期的方法 例如 Awake Start…)
热更工程
HotFixMonoBehaviour(实现生命周期函数)

案例:跑马灯

功能描述:点击UI按钮,文字移动

注册 自定义委托 ,注册 CLR绑定(性能优化)

U3D热更组件可视化编辑

主工程
定义序列化模型 ClassData

编辑器工具
读取热更程序集,通过反射获取 类型的所有字段和成员,根据U3D的序列化流程 绘制到 组件面板

热更工程
反序列化方法,通过ClassData 设置成员属性

运行时
主工程 调用 热更工程 的反序列化方法,设置成员属性

在这里插入图片描述

ILruntime 实战

本节的主题:热更代码划分
采用《天地劫》框架作为讲解素材
因为它包含了商业游戏的常见业务,比如
(战斗,技能,AI,UI,资源管理,寻路系统等常用功能)

第一个问题:哪些业务需要热更?

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

通用业务
资源管理模块(JAssetBundleMgr),负责资源的加载和下载更新,加解密
(具体可以查阅往期的视频)

A星寻路库(AStarPathFinding),负责游戏路径的计算

基本可以认为这些模块是不会改动的,是稳定的

游戏业务-战斗,技能,UI,AI,流程控制。所属目录(slgkit/scripts)
稳定的通用业务保留在主工程
对变化频繁的游戏业务放到热更工程
HotFix_Project~

热更代码的语法编写规则

本节的目标,角色显示移动范围
整个过程
调用A星插件计算路径
对路径集合进行数据筛选
把最终的数据显示出来

在这里插入图片描述
List().FindAll();

因为热更工程的委托默认只支持Action和Func
List.FindALL(Predicate match)表达式签名不被支持

解决该问题有两种办法
在主工程里写转换接口
在这里插入图片描述
或者 在热更工程编写符合签名的FindAll(Func<T,bool>)

在这里插入图片描述

战棋游戏热更代码修改过程
在这里插入图片描述

热更项目不支持 可空类型
比如Vector3? MouseRaycast() 改成 Vector3 MouseRaycast()

forech 最好不要用 有gc,改成for

(热更程序集里的)组件添加和获取

要做的事情:在热更程序集里添加 声音,特效,AI,UI组件

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

在这里插入图片描述

在这里插入图片描述
示例代码
在这里插入图片描述

携程的使用

我们要做的事情:开启AI托管系统

因为AI托管用到了携程,所以热更代码需要适配

在热更里使用携程,需要在主工程里注册携程适配器,ilruntime例子有提供CoroutineAdapter
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

事件管理器

要做的内容:现UI飘字,打击特效,音效
在这里插入图片描述
原本的事件管理模块(不支持热更运行)
在这里插入图片描述

更改后的(支持热更)
在这里插入图片描述

使用代码:

在这里插入图片描述

代码热更应用

通过热更的方式:为战斗系统添加帮助说明

第一个问题是:如何让HotFix_Project.dll更新?
可以回顾我们之前编写的资源管理模块
视频专题《unity3d AssetBundle 资源管理和更新》
具体操作
把程序集文件拷贝到资源生成目录,生成资源清单和资源文件

得到资源1.0版本,并且 部署到服务器

发布游戏-客户端1.0版本,运行测试

2.0版本开发需求-为战斗系统添加帮助说明

编写业务逻辑

重复 生成资源和部署服务器 步骤,得到2.0 版本

运行客户端 ,可以看到,在没有重新发布客户端的情况下

战斗场景多了帮助说明

完结

《ILruntime 代码热更解决方案 》就到此完结,感谢观看本系列课程

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本课程主要是针对ILRuntime设计一个独立的脚本新框,框架的优势:1.将代码脱离Assetbundle资源,独立的部分适用于各种不同的框架。2.加快项目的逻辑新,bug修复.(后期修bug,多数情况下并不用动到资源,只需要新脚本代码,无需重走资源打包发布流程,大大提升效率)3.提供模式和正常开发模式的快速切换接口,可以让队友像平常一样去开发.4.不依赖市面上的任何AB框架,完全兼容市面上各种不同的AB框架.5.重点:希望通过它,帮助你学习、了解ILRuntime真正在项目中的应用.框架的将提供以下这些接口,这些接口将从0开始,在Unity里将C#脚本编译成dll,然后将dll放到服务器上,再将dll下载下来,进行加载,到最后从Unity主工程调用新的代码逻辑.1.Create hotfixdll接口将部分的代码 编译成dll生成dll版本配置(MD5)2.新对比接口本地跟服务器的dll进行版本对比3.下载dll下载dll本身的文件下载版本记录文件4.加载dll加载dll实例化:AppDomain初始化:注册跨域继承适配器注册委托适配器LitJson重定向调用性能优化(CLR绑定功能)调用接口Hotfix.HotfixApplication.Main 进入逻辑5.ILMonoBehaviour用于监听组件的生命周期,实际是桥接(调用)的逻辑AwakeStartEnableUpdateLateUpdate.......6.添加其他常用的库DOTweenLitJsonSpineGoogle.ProtobufTextAnimation可以根据上面的方式,自行添加依赖的库... 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程之力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值