由于项目中打算使用unity3d,最近研究它在线更新的问题,得到一个答案:死心吧!
1.C#反射机制ios不适用,unity3d在ios平台上与其他平台不一样,ios不支持反射,而其他平台可以做到,但即使适用映射,对于unity3d来说也不方便,这与unity3d采用mono机制,比如:一个挂在GameObject上的Mono脚本,初始化是不能自己new的,而完全由mono创建,如果适用反射,创建对象就必须由反射机制对象创建,赋值等。当然也可以获取Type加动态添加到GameObject上,如此编程就不能所见既所得了,何况IOS不支持,此路不通。
2.类似lua的脚本解析不适用,适用这个可以做到一些动态更新,但是比较麻烦,不适合大范围适用,编码也很罗嗦,有兴趣的可以去研究下,可以确定的是这个可以有。
3.即使改变ios中初始化设定的unity的目录,比如把Data目录改变到app下的duco目录,这样可以做到脚本资源更新,但一旦脚本变动,mono的就不能注入,应为在打包APP时,.dll.s文件对应的.dll已和APP项目代码一起打包到Unlx可执行文件中了,也就是APP启动的那个包,一旦dll变动而不更新这个包的话,会出现一个AOT问题,未破解的机器无解