Unity之热更初探

由于c#是编译+解释型的语言,所以游戏在出包之后想要再修改一些程序就比较困难。

通过不断查找找到几种可行的方案:

1.更新dll,利用反射做代码的更新。(在ios上有限制,无法使用)

2.引入嵌入式脚本语言lua。(有tolua、xLua等框架)

3.采用ILRuntime等第三方框架。

最终还是选择xLua框架。

虽然据说效率方面不如tolua,但是用起来还是挺方便的。

通过一个多礼拜的学习,大致了解到xLua为我们提供了两个大方向:

1.用lua调用c#的方式来写逻辑,通过assetbundle更新lua文件来更新逻辑。

2.通过热修复的方式覆盖原本的c#代码,达到更新原代码的目的。

在实际开发中,两种方式肯定是要同时使用的。

具体的使用,xLua官方的教程、文档和案例说的非常详细。

前天偶然听到大佬提起内存泄漏的问题,我也打开我做的简单的商店demo测试了一下。

(在实际操作过程中发现,官方文档里提到的内存泄漏定位工具已经弃用。。

于是在git上反复查找,终于找到了新的内存泄漏检测工具,但是好像还不如之前的好用?)

不测不知道,一测吓一跳。虽然xLua为我们做了一些内存回收工作。

但由于写的时候完全没有考虑到内存安全。这个功能很简单的模块,进出一次就会泄漏接近200kb的内存。

好好找了下原因,发现大部分都是引用持有问题。

尽管脚本已经销毁,但是内部持有一些引用的变量所在的内存,并不会被释放。

在销毁脚本时,手动将这些持有引用的变量设为nil,这些内存就可以被正常回收了。

至于还有一些没有找到泄漏处,等过一阵再回过头找。。。

猜你喜欢

转载自blog.csdn.net/a977621265/article/details/88289586