ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ILRunTime热更 个人见解

2022-07-13 12:33:40  阅读:227  来源: 互联网

标签:ILRunTime 个人见解 工程 Mono 程序 dll IL2CPP


unity分为两种打包模式,Mono和IL2CPP,Mono是一种JIT即时编译模式,IL2CPP则是咱们常见的直接编译成二进制的模式。

Mono模式打包后在Managed文件夹里面有各种dll的程序集(c#编译后会生成中间态也就是dll程序集),在游戏启动时,Mono虚拟机(CLR)在通过一些列操作后会再次对程序集进行编译成二进制文件运行,所以在Mono模式的热更就是直接更换dll程序集。

IL2CPP模式打包后在il2cppOutPut文件夹里面会把Unity下的程序集(Assembly-CSharp)转换成cpp文件,在启动游戏时直接通过c++编译器对cpp进行编译成二进制文件,这时更新dll程序集则没有效果,因为在这个模式下根本就不会用到dll程序集,所有ILRunTime就有用了。ILRunTime可以说是一种解释器,它不会对dll进行编译,但它可以通过反射对dll里面的il指令一句一句进行解释,所以在ILRunTime更新逻辑工程的dll会起到效果。整个游戏框架是这样的,首先要有两个工程,一个主框架工程,一个热更逻辑工程,这样会有两个dll。主框架工程包含了ILRunTime的所有代码,这个工程是不能进行更新的(因为IL2CPP),而咱们可以把热更逻辑工程当成一个资源更新,然后运行主工程时里面的ILRuntime起作用把热更逻辑工程dll的il指令通过自带的解释器一句一句运行(就是一个解释器,ILIntepreter.cs源码进行解释),从而实现热更。(热更只能更新逻辑工程)

标签:ILRunTime,个人见解,工程,Mono,程序,dll,IL2CPP
来源: https://www.cnblogs.com/lwj0419/p/16473441.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有