![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ILRuntime
� HiggsParticle
这个作者很懒,什么都没留下…
展开
-
ILRuntime入门12 类型绑定
简介在ILRuntime中,如果不对Unity特定数据类型进行绑定,也是可以使用的,但是会产生较多额外的CPU开销和GC。我们只需要在热更使用前,对需要用的Unity特殊数据类型进行绑定后就能高性能简单使用了。使用流程说明和之前文章一样初始化appdomain //大家在正式项目中请全局只创建一个AppDomain AppDomain appdomain; System.IO.MemoryStream fs; System.IO.MemoryStream p;原创 2021-08-20 15:26:53 · 744 阅读 · 0 评论 -
ILRuntime入门11 LitJson
简介在热更工程中使用Json序列化和反序列化和在Unity中差不多,只是需要在Unity中进行热更新Json注册就行。使用流程和之前文章一样初始化appdomain //大家在正式项目中请全局只创建一个AppDomain AppDomain appdomain; System.IO.MemoryStream fs; System.IO.MemoryStream p; void Start() { StartCoroutine(LoadHo原创 2021-08-20 14:59:04 · 1493 阅读 · 1 评论 -
ILRuntime入门10 Reflection反射
简要说明反射并不是Unity特有的,在C#工程中反射是很常用的功能,ILRuntime也对反射进行了支持,在Unity工程中与热更工程中和普通C#工程项目没有什么区别,正常使用就行。Unity工程中反射热更DLL类型demo如下和之前文章一样初始化appdomain //大家在正式项目中请全局只创建一个AppDomain AppDomain appdomain; System.IO.MemoryStream fs; System.IO.MemoryStream p;原创 2021-08-20 14:11:16 · 287 阅读 · 0 评论 -
ILRuntime入门09 MonoBehaviour生命周期与组件
简要说明在热更工程中使用Unity的MonoBehaviour相关调用,虽然是可以实现的,但是官方不推荐这样去使用,如果非要使用,还是基于Unity内部自身脚本MonoBehaviour配合委托或者回调去实现。即便能做到使用,要完全支持MonoBehaviour的所有特性,会需要很多额外的工作量;不仅可维护性与性能都很差,而且通过MonoBehaviour做游戏逻辑当项目规模大到一定程度之后会是个噩梦,因此应该尽量避免。具体使用流程和之前文章一样初始化appdomain//AppDomain是原创 2021-08-20 13:51:02 · 1132 阅读 · 0 评论 -
ILRuntime入门08 IEnumerator协程的使用
具体流程其实在ILRuntime和正常方法调用没有太多区别,只是需要在使用前先注册热更携程,热更工程中的携程调用实际用的也是Unity中的携程方法调用。和之前文章一样初始化appdomain//AppDomain是ILRuntime的入口,最好是在一个单例类中保存,整个游戏全局就一个,这里为了示例方便,每个例子里面都单独做了一个 //大家在正式项目中请全局只创建一个AppDomain AppDomain appdomain; System.IO.MemoryStream f原创 2021-08-18 17:41:20 · 488 阅读 · 0 评论 -
ILRuntime入门07 CLR绑定
介绍大部分热更解决方案都是采用CLR绑定方式去优化跨工程的调用优化问题,如果不使用CLR绑定,那么ILRuntime会默认采用反射的方式来调用热更dll方法,性能肯定大受影响;强烈推荐每次大家做完新的类方法后,最好都能执行一次CLR绑定操作,并在Unity代码中去执行绑定初始化,以避免采用反射方式来调用热更代码中方法。使用流程1.导入ILRuntime插件并编写新的热更相关脚本和类后请点击 ILRuntime >> 通过自动分析热更DLL生成CLR绑定 选项。2.和之前文章一样初始化a原创 2021-08-18 17:22:34 · 1205 阅读 · 0 评论 -
ILRuntime入门06 CLR重定向
介绍什么时候需要CLR重定向呢,当我们需要挟持原方法实现,添加一些热更DLL中的特殊处理的时候,就需要CLR重定向了;一般情况下很少有这种需求,也就类似于重写热更方法了,开发者也能使用其他方式进行处理这种需求,才接触的新手了解下就行。具体流程和之前的文章一样,初始化ILRuntime的AppDomain,我比较喜欢把appdomain.UnityMainThreadID指定主线程操作放在初始化里面,这样更容易维护与阅读。 //AppDomain是ILRuntime的入口,最好是在一个单例类原创 2021-08-18 15:54:17 · 883 阅读 · 0 评论 -
ILRuntime入门05 类继承
使用流程我们可能需要热更工程去继承Unity工程中的类,那么我们就需要为其写一个适配器,具体流程如下:新建Unity工程父类public abstract class TestClassBase{ public virtual int Value { get { return 0; } set { } } public virtual voi原创 2021-08-18 15:33:29 · 572 阅读 · 0 评论 -
ILRuntime入门04 回调方法与委托的使用
简要介绍如果只在Unity项目或者只在热更DLL工程中使用回调或者委托,那么按正常C#代码编写就行。如果你需要将委托实例传给ILRuntime外部使用,那则根据情况,你需要额外添加适配器或者转换器。如果为了避免写转换器,在项目中就应该尽量使用回调Action和Func。委托使用流程:实例化ILRuntime的AppDomain,加载热更dll和pdb,第一步和上一节文章一样。//AppDomain是ILRuntime的入口,最好是在一个单例类中保存,整个游戏全局就一个,这里为了示例方便,每个例子原创 2021-08-18 14:21:45 · 464 阅读 · 0 评论 -
ILRuntime入门03 Unity调用热更方法
使用www加载DLL热更文件与PDB日志文件(发布后不需要查看打印热更的日志,可以去掉PDB文件);#if UNITY_ANDROID WWW www = new WWW(Application.streamingAssetsPath + "/HotFix_Project.dll");#else WWW www = new WWW("file:///" + Application.streamingAssetsPath + "/HotFix_Project.dll").原创 2021-08-17 16:02:28 · 474 阅读 · 0 评论 -
ILRuntime入门02 HelloWorld
ILRuntime的初步使用在官方Demo文件夹中,有一个存C#库项目工程(Assets\Samples\ILRuntime\1.6.7\Demo\HotFix_Project~),在unity中,如果文件夹最后 ~符号,那么文件夹不会在unity中编译。HotFix_Project ~ 就是核心热更新工程文件夹。unity工程实际也是C#工程,在工程路径下有一个Assembly-CSharp.csproj文件,使用文本查看器打开,能看到工程的.net版本。大家也自己可以在Unity发布设置里面改变原创 2021-08-17 15:15:26 · 253 阅读 · 0 评论 -
ILRuntime入门01 纯C#热更新介绍与工程环境配置
介绍参考(https://ourpalm.github.io/ILRuntime/)ILRuntime作为Unity纯C#热更新解决方案,性能与方便程度都是最好的,没有之一;与目前比较火的Lua解决方案对比,性能并不差(最新官方Demo中有与Lua性能对比案例,ILRuntime在工程中与发布后性能不一样,需要发布后进行对比测试),对比某些Lua热更解决方案,ILRuntime作者一直更新维护中,所有不用担心后续的使用。且由于ILRuntime已经发布很多年,有很多上线的成熟项目,不用担心不能在项目中正原创 2021-08-17 14:47:38 · 436 阅读 · 0 评论