zifa2003293 发表于 2023-2-15 12:02

Unity3d框架篇(7):脚本热更c#一样也能玩出花

本系列基于:BDFramework 、Unity3D 2018.4.0
BDFramework:Simple! Easy! Beautiful! This is a powerful Unity3d game workflow!
框架地址:
GayHub:yimengfan/BDFramework.Core,
码云 :yimengfan/BDFramework.Core欢迎赏星。
第九艺术 、第十艺术讨论群 : 606667651
0x001:前言

市面上有很多热更新方案Lua、Js。然而笔者早就立下Flag:0学习成本。
所以基于C#热更库ILRuntime(这个启蒙于李总的L#)做了一套工作流。打造0学习成本,快速开发热更项目。
效率:很多同学关心运行效率,实际项目中的数据,C#热更跟Lua热更相比,在函数调用,访问属性等效率上要高于Lua,纯数值计算上低于Lua。但两者处于一个数量级。
笔者综合比较开发效率,学习成本,调试查错效率,以及笔者对C#虚拟机比较熟。
所以最终选择哪个还是取决于你们自己咯~
ILRuntime库:Ourpalm/ILRuntime
0x010:使用流程

很尴尬,因为0学习成本,所以没啥好说的。只能先介绍工作流怎么用的,后面介绍一点工具的开发~
1.ILRuntime作者,给出一套工作流:
新建一个.csproj,然后将热更代码写在这个工程中。每次写完运行需要手动build一下,.dll会生成到unity目录下。最后运行unity,就是直接执行这个热更dll。2.对于以上的工作流,笔者觉得还是不够舒爽:比如每次build完Dll、unity会把pdb2mdb,这个会花一点时间。其次,每次都需要手动build一下..等等
于是笔者制定了一个工作流,并开发相关工具.
流程如下:
   i)开发跟平时一样,将需要热更的目录,加上@hotfix
   ii)打包时候,只需要使用如下编辑器,就能build出 hotfix.dll

iii)然后勾选全局启动,如下:


      怎么样,是不是很舒爽?
0x011:实现原理
当然,0学习成本也是吹牛拉。实际上只能减少学习成本~
使用这套工作流需要理解整个流程:
1.整个代码工程其实还是分为:主工程,热更工程
2.主工程:   是由unity3d的dll,第三方插件的dll和cs文件,BD框架内一部分,还有自己写的一部分不适合热更的业务逻辑
3.热更工程:是基于以上主工程,所有的cs文件
BD框架,编译DLL的流程如下:


首先我们先编译出主工程Base.dll,依赖DLL:Unity3d的dll + 第三方插件 +非热更逻辑
然后再搜集到所有带有 @hotfix的标签的.cs文件, 编译出HotFix.dll
所以编程过程中,谨记以下两点:
1.主工程中不要访问,@hotfix 中的类 对象等...
2.@hotfix 中代码不要太浪,尽量不要用高级特性,反射等...
3.慢慢去ILR群问吧

所以很尴尬啊,因为打造的是0学习成本,所以都没啥说的,只能谈谈怎么使用编辑器。
下一篇,我们讲讲怎么做自己的编译服务,提高下逼格~

ainatipen 发表于 2023-2-15 12:11

很棒的系列文章,期待持续更新

acecase 发表于 2023-2-15 12:18

666大佬

redhat9i 发表于 2023-2-15 12:23

很棒很棒先学习下

super1 发表于 2023-2-15 12:31

楼主,为什么我下载的PosePlus_TBS,里面茫茫多的语法错误?

maltadirk 发表于 2023-2-15 12:32

unity 2017,.net 4.6 了解下

IT圈老男孩1 发表于 2023-2-15 12:38

巧了,我还真是unity2017和.net4.6,难道哪里配置不对?

RhinoFreak 发表于 2023-2-15 12:40

这个就不清楚了,TBS项目是本地跑通过 才提交的,

RecursiveFrog 发表于 2023-2-15 12:45

看上去不错哦
页: [1]
查看完整版本: Unity3d框架篇(7):脚本热更c#一样也能玩出花