Unity3D在iOS下为啥不能更新的资料收集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Unity3D在iOS下为啥不能更新的资料收集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1152字,纯文字阅读大概需要2分钟。
内容图文

- 几个基本概念
- Mono 是什么鬼?
Mono是一个.Net工具,包括c#编译器和共通语言执行平台,可运行在winodws linux mac unix各种平台,其虚拟机包含一个实时编译引擎, Unity3d就是用mono这个东西实现跨平台的估计
-
- CIL(Common Intermediate Language通用中间语言)
CIL可以在任何支持CLI(Common Language Infrastructure,通用语言基础结构)的环境中运行,就像.NET是微软对这一标准的实现,Mono则是对CLI的又一实现。由于CIL能运行在所有支持CLI的环境中,例如刚刚提到的.NET运行时以及Mono运行时,也就是说和具体的平台或者CPU无关。这样就无需根据平台的不同而部署不同的内容了。
代码的编译分两个部分:
-
-
- 从代码本身到CIL的编译(其实之后CIL还会被编译成一种位元码,生成一个CLI assembly)
- 运行时从CIL(其实是CLI assembly,不过为了直观理解,不必纠结这种细节)到本地指令的即时编译(这就引出了为何U3D官方没有提供热更新的原因:在iOS平台中Mono无法使用JIT引擎,而是以Full AOT模式运行的,所以此处说的额即时编译不包括IOS)
-
-
- Mono的AOT?
Ahead of Time (AOT) 提前编译来减少JIT的工作量,(JIT: Just In Time Compile,即时编译器)但默认情况下AOT并不编译所有IL代码,而是在优化和JIT之间取得一个平衡。在iOS中,Mono是以Full AOT模式运行的,无法使用JIT引擎。iOS平台是禁用JIT引擎的,于是Mono在iOS上需要Full AOT编译和运行。即预先对程序集中的所有IL代码进行AOT编译生成一个本地代码映像,然后在运行时直接加载这个映像而不再使用JIT引擎。
-
- 过程总结
1. c# ---> CIL
2. CIL ---> 位元码
3. 第三步有两种形式:
---> JIT 位元码 给虚拟机执行
----> AOT 位元码 ---> 不同平台原生代码 直接平台执行
而JIT这种方式是被iOS禁止的,只能用AOT模式在运行前先编译好(当然AOT编译阶段也是用到JIT的引擎)
基本是这样
-
- 反射
-
- 反射跟Mono有啥关系?
猜测反射就是Mono使用JIT的主要技术
- Unity3D与cocos2dx更新有啥不一样?
- 参考资料
原文:http://www.cnblogs.com/atenza/p/4897174.html
内容总结
以上是互联网集市为您收集整理的Unity3D在iOS下为啥不能更新的资料收集全部内容,希望文章能够帮你解决Unity3D在iOS下为啥不能更新的资料收集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。