纳金网

标题: Unity的跨平台是什么原理? [打印本页]

作者: 王者再临    时间: 2014-12-8 23:45
标题: Unity的跨平台是什么原理?

1)为什么unity可以实现跨多个平台呢?转自http://www.cnblogs.com/wonderKK/p/4095632.html

看了一些帖子,发现原来unity在ios和安卓平台上的底层实现是不一样的,面向iOS的C#代码会通过AOT编译技术直接编译为ARM汇编代码。而在Android上,应用程序会转换为IL(中间语言IL(Intermediate Language),启动时再进行JIT编译。iOS平台中,Mono是以Full AOT模式运行的,无法使用JIT引擎,于是引发了这个异常。

Mono的AOT和.NET的Ngen一样,都是通过提前编译来减少JIT的工作,但默认情况下AOT并不编译所有IL代码,而是在优化和JIT之间取得一个平衡。由于iOS平台禁止JIT编译,于是Mono在iOS上需要Full AOT编译和运行。即预先对程序集中的所有IL代码进行AOT编译生成一个本地代码映像,然后在运行时直接加载这个映像而不再使用JIT引擎。目前由于技术或实现上的原因在使用Full AOT时有一些限制,具体可以参考[url=]MonoTouch的文档[/url],这里提几条常见的:


2)unity里面的动态反射
        Test t  = new Test();
        t.uid =  PlayerData.GetAcount;
        t.password = PlayerData.GetPassword;
        System.Type type = t.GetType();
        BindingFlags flags = BindingFlags.Instance | BindingFlags.Public;
        PropertyInfo[] props = type.GetProperties(flags);
        JsonObject requestGateList = new JsonObject();
        for (int j = 0; j < props.Length; ++j)
        {
            PropertyInfo p = props[j];
            Debug.Log(p.GetValue(t, null));
            requestGateList.Add(p.Name, p.GetValue(t, null));
        }
        request.RequestServo("requestGateList", requestGateList);








欢迎光临 纳金网 (http://course.narkii.com/club/) Powered by Discuz! X2.5