找回密码
 立即注册
查看: 346|回复: 7

[笔记] Unity使用C#热更新有哪些惊艳的功能

[复制链接]
发表于 2023-2-16 14:28 | 显示全部楼层 |阅读模式
大家好,我是傑,独立游戏开发者,同时也是Unity热更新框架JEngine的作者。
前言

JEngine是一个使用C#进行代码热更新的框架,当然,也包含资源热更。
截止至今,JEngine在Github上开源已满一年,荣获850个star,同时在Gitee上荣获推荐,有十几种不同类型的老项目接入,也有几十个商业项目正在采用该框架进行开发,更有数不胜数的独立开发者正在用JEngine开发自己的独立游戏。


本篇文章会逐一介绍JEngine那些脱颖而出的功能。
先说一下JEngine的宗旨,就是开箱即用,近乎为0的学习成本可以让人轻松掌握热更新;
无独有偶,该框架还注重使用者的开发效率,可以说作者本人是耗费了大量脑细胞来实现这些功能。
那么,JEngine这个框架究竟哪里惊艳了呢?

惊艳之处

10分钟就可以上手热更新
JEngine有上万字的文档,以及共计几百分钟时长的视频,同时入门视频仅10分钟,看着视频去操作就可以实现资源热更和代码热更,轻松get到热更。

完善的编辑时支持
大家原生Unity开发的时候,都喜欢把MonoBehaviour脚本拖拽到gameObject上,但是众所周知,热更新的这些脚本就不能这么做了,但是JEngine对其做了解决方案——ClassBind,可谓框架灵魂之一。
该功能不仅可以把MonoBehaviour热更脚本挂到gameObject并对其字段赋值和实例化,还可以把任何热更类型挂上去,进行字段赋值和实例化,以及实例化和赋值后调用其Awake方法(如果有的话)。
目前ClassBind支持对数字、字符串、布尔值、GameObject、Unity类型、热更类型(在ClassBind内也属于Unity类型)、热更资源类型、基础类型数组和Unity类型数组。
可以说已经支持大部分字段类型了,非常的好用,详情可见配图。



ClassBind编辑时面板

看到配图,可能大家会发出疑问,这个面板怎么和Unity的序列化面板看起来不一样?别着急,这个是编辑时,而非运行时的面板,在开发时大家可以把ClassBind挂的场景内的GameObject上进行热更类型的实例化,也可以挂到Prefab上,都是毫无问题的。

眼尖的朋友可能也看到了,最底部有4个按钮,也是大幅度提高了开发效率:

  • 自动匹配全部fields,顾名思义,当开发者把类的命名空间和类名输入后,点击此按钮,会把该类全部的字段全显示出来
  • 自动校正fieldType,可以根据字段类型去矫正其在ClassBind内的指定类型
  • 重新排序fields,会把字段名按照拼写规则去排序字段,同时删除不存在的字段
  • 自动匹配gameObject,会将字段名根据自定义的正则规则(默认下划线分割)去匹配挂了ClassBind的gameObject的子对象,并自动赋值(只对GameObject和Unity类型的字段有效)

可以说,有了这个ClassBind,在开发时的效率已经和原生开发相差无几了。
想一想,要是没ClassBind,不得代码里写一堆gameObject.AddComponent<XXX>().xxx字段 = xxx;

贴近原生的运行时支持
现在说说运行时。
运行时的Inspector,JEngine已经做到了和原生一般无二,同时也提供了接口自己进行序列化扩展



运行时Inspector

这样一来,对比其他热更新框架,JEngine的开发效率简直突破了天际,大幅度保留了Unity的精髓,可视化编程。
编辑时可以直接通过拖拽和填数据,运行时自动赋值和实例化,同时有接近原生的面板序列化将数据可视化,最重要的是,这些实例化和可视化对热更实例的类型是没有限制的,什么类型都可以创建和在Inspector可视化(前提用ClassBind创建,或AddComponent给gameObject挂热更脚本)

安全的热更代码
JEngine对开发者的结晶极为看重,对热更代码更是进行了多重保护,代码源文件进行了AES加密,同时读取时进行的是分块解密进内存,可以有效防止抓取内存来获取源码和下载热更文件并反编译获取源码,当然,如果加密密钥泄露或被破解,还是会导致代码泄露的。
这一块作者也曾经写过文字,可以参考这里:

最后

以上是JEngine开源版和专业版的部分功能,更多功能请参考Github/Gitee项目页面、文档、视频或源码。
可能在看这篇文章的你还没怎么接触过热更,也可能有所接触,甚至是一枚老手,无论如何,JEngine框架的开发效率,在开源Unity热更新框架中都算领先,这也是为什么JEngine在一年就能异军突起,荣获850个用户的star,同时荣获Gitee的推荐。
同时,JEngine的star内包含了腾讯、网易、字节跳动等游戏大厂员工的收藏,也包含如凉屋游戏这些出名工作室的青睐,感谢这些大咖对JEngine框架的认可。
目前JEngine专业版已推出,对开源版的很多功能进行了功能加强和底层代码优化,大幅度提高了性能,与此同时还有很多新增功能,如果你对JEngine感兴趣,不妨在使用开源版之后试试专业版~

感谢阅读本文!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-2-16 14:34 | 显示全部楼层
热更新还是用的ilruntime,主要是一些框架性的封装,适合小游戏吧,大型游戏都不会用太多mono挂载的
发表于 2023-2-16 14:35 | 显示全部楼层
JEngine的代码热更部分用的就是ILRuntime啊[害羞]
发表于 2023-2-16 14:40 | 显示全部楼层
也不一定需要挂 只是说开发效率用JEngine很高
发表于 2023-2-16 14:48 | 显示全部楼层
支持杰哥
发表于 2023-2-16 14:51 | 显示全部楼层
感谢支持
发表于 2023-2-16 14:56 | 显示全部楼层
大佬,在热更代码里怎么IPointerDownHandler这种接口会没有反映[飙泪笑]
发表于 2023-2-16 15:00 | 显示全部楼层
主工程封装好,针对封装的类做适配器然后跨域继承
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-4 15:52 , Processed in 0.093867 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表