接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识。
Unity3D的编译器升级
新升级的Mono C#编译器(对应Mono 4.4)
Unity编辑器及播放器所使用的Mono运行时还未升级。
新编译器仍针对C# 4,是旧的编译器也支持的版本。
新编译器目标框架为.Net 3.5,也是之前支持的框架。
Mono是如何运行的?
*.cs源文件通过编译器编译成IL(中间文件)
IL 运行在Mono的 JIT(just in time)
Mono虚拟机运行在物理机中
查看Unity使用的Mono版本
参考:http://answers.unity3d.com/questions/259448/how-to-determine-mono-version-of-unity-.html
我在unity 5.3.4f1 中测试有效,而在unity 4.3.4f1下测试无效
using UnityEngine;using System;using System.Reflection;public class MonoVersion : MonoBehaviour { void Start() {
Type type = Type.GetType("Mono.Runtime");
if (type != null)
{
MethodInfo info = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
if (info != null)
Debug.Log(info.Invoke(null, null));
} //Debug.Log(System.Enviroment.Version);//net version?
}
}
方法二
d:\Program Files\Unity_5_34\Editor\Data\Mono\bin>monop2 --runtime-version mono.exe
runtime version: 2.0.50727.1433
d:\Program Files\Unity_5_34\Editor\Data\Mono\bin>mono.exe --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Notification: Thread + polling
Architecture: x86
Disabled: none