Unity热更新

Unity热更新

以下方案我只在android平台上测试,其他平台我还没有试过。
关于unity资源热更,官方有成熟的方案,就是大家熟悉的assetbundle。
但是关于脚本的热更,网上有好几种方案,不过都有很多局限性。but,需求是无止境的。我们的需求就是所有资源全部做成下载的。包括so!
熟话说,有压迫就有反抗,于是我为了响应产品的号召,整理出了一个方案!主要支持:
1、所有的so和资源(assets)全部下载;
2、so打包进apk,资源下载;
3、so下载,资源打包进apk;
4、部分so下载,部分so打包,资源或打包,或下载;
5、资源利用obb部分打包,部分下载。
具体的实现方案就是:
1、针对so,hook住libmian.so中的dlopen(),然后改变其他so的加载路径(利用system.load加载)。
2、针对资源hook住libunity.so中的naviteFile(),这个方法是一个native方法,第一次会用它打开一个路径就叫父级路径吧,也就是assets这个资源文件的目录所在,所有其他unity的资源加载时,都会这个父级路径下查找。通过修改这个传进来的路径就能做到自定义资源加载路径了。
通过以上2点就可以做到整个unity资源全部下载了,自然也就支持热更了,不过是整个游戏包热更,不过还好吧!而且没有任何限制。当然要做成部分资源热更也可以,我这没这个需求,自己也就没有折腾这个问题了。

你可能感兴趣的:(游戏开发,unity,热更,android)