unity代码热更新方法有很多,但实用的目前就是lua,但我不喜欢lua,一直想用c#进行热更新。
在2012年,就有人提出既然Mono是开源的,那么完全可以通过修改mono源代码实现重新加载dll实现热更新。可惜这个楼主只提出了设想,并没有具体实现细节。
今年,也就是2016年,我在一个技术群里得知,其实绝大部分大公司,目前用的都是这种方法实现热更新,其中一个游戏就是超级地城之光。既然知道已经有人在做了,那么我就可以尝试一下。自己捣鼓前,我还百度了一下,果然,已经有人有教程了:
http://blog.csdn.net/qq_27772057/article/details/51945700
我觉得这个人的博客已经很详细了,不过由于整体看上去比较复杂,所以可能细节上不好处理。
我自己重新去实现了一下整个流程,已经测试通过。
目前的策略是,通过修改mono源代码,编译出新的libmono.so
启动游戏时候,下载Assembly-CSharp.dll,这样进入游戏就会使用更新后的代码。
为了让大家方便一些,我自己编译好了4.6版本的libmono.so, 除了热更新,其实还有加密的功能,加密算法也