【Unity3D】Unity3D工具、Mono工具、内部脚本工作原理以及跨平台特性

Unity3D工具、Mono工具、内部脚本工作原理以及跨平台特性


1、几个概念的理解:

Unity3D主要包括两个部分:Unity Engine和Unity Editor。提供了UnityEngine.dll和UnityEditor.dll两个动态库。
Unity Engine:C/C++编写,由平台相关代码,图形API、物理引擎、灯光、网络层接口等组成,编译为UnityEngine.dll,各平台不同,用户Shader代码也属于这一层的内容;
Unity Editor:IDE工具,大部分是由C#编写,插件也是用C#编写(调用UnityEditor.dll开发),用户脚本可用C#/JS/Boo编写,项目代码最后由Mono编译;
Mono运行环境:Novell公司开发的跨平台·NET运行环境。功能是编译工程以及提供不同平台的CLR运行时。对于Android平台,首先编译输出为dll(即IL),游戏启动时Mono运行时再将用户dll和UnityEngine.dll等编译为JIT格式运行;对于IOS平台,由于不允许运行时生成Native Code,只能一次性将UnityEngine.dll和用户脚本等编译为Full AOT格式存储。

JIT(Just-in-Time compilation,即时编译)

AOT(Ahead-of-Time,提前编译或静态编译)

上面说了,在IOS平台,不能再运行时生成Native code,为了绕过苹果公司的这个机制,可以使用Lua语言来实现热更新。


2、Unity3D程序以及内部脚本工作原理:
由上面介绍可知,Unity程序调用的层次关系是:

脚本(C#/JS/Boo)/UnityEditor/Unity Plugin --> 

UnityEngine(C/C++) --> 

图形API(OpenGL/DirectX/CG/Shader等)/物理引擎(Nvidia的PhysX)/灯光(Autodesk的Beast/Enlighten)/网络层(UNET) --> 

底层代码(如操作系统内核、汇编等) --> 

硬件

3、Unity3D跨平台特性:
这里的上帝是Mono,它为Unity游戏提供了.Net框架。针对不同平台的编译打包,都会把Mono运行时打包进去,当执行用户脚本的时候,就是由它来解析,从而达到跨平台的效果。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值