你的位置:首页 > 软件开发 > ASP.net > 跟Unity3D学代码优化

跟Unity3D学代码优化

发布时间:2016-09-04 20:00:10
今天我们来聊聊如何跟Unity学代码优化,准确地说,是通过学习Unity的IL2CPP技术的优化策略,应用到我们的日常逻辑开发中。 做过Unity开发的同学想必对IL2CPP都很清楚,简单地说,IL2CPP就是Unity用来替代mono的一种script backend。至于 ...

跟Unity3D学代码优化

今天我们来聊聊如何跟Unity学代码优化,准确地说,是通过学习Unity的IL2CPP技术的优化策略,应用到我们的日常逻辑开发中。

 

做过Unity开发的同学想必对IL2CPP都很清楚,简单地说,IL2CPP就是Unity用来替代mono的一种script backend。至于说Unity为什么用IL2CPP替代mono,就是另外的话题了,本文就不细港了。

 

IL2CPP由两部分组成:

  • 一个AOT(ahead of time)compiler。完全用C#写的。

  • 一个VM runtime library。主体C++,外加部分平台特定的汇编代码。

 

IL2CPP AOT compiler的工作原理就如字面意思,读取并Parse (虽然并不知道用Mono.Cecil算不算Parse)IL Assembly ,分析并优化,然后生成cpp代码。IL2CPP的实现也很简单,生成的C++代码基本跟IL一一对应,有兴趣的同学可以自己试一下写点C#,然后看看生成的C++代码。

 

IL2CPP正式release已经有一年多了,一开始人人质疑,现在大家已经基本接受。这种转变肯定不是一日促成的,主要还是靠Unity对IL2CPP的重视和持续跟进的优化。

这两个月,Unity官博发了一个IL2CPP优化三部曲,接下来我们就看看如何从其中学习代码优化思路。

 


 

首先是第一个优化例子:

 1 public abstract class Animal { 2  public abstract get='_blank'>string Speak(); 3 } 4  5 public class Cow : Animal { 6  public override string Speak() { 7    return "Moo"; 8   } 9 }10 11 public class Pig : Animal {12   public override string Speak() {13     return "Oink";14   }15 }16 17 public class Farm: MonoBehaviour {18  void Start () {19    Animal[] animals = new Animal[] {new Cow(), new Pig()};20    foreach (var animal in animals)21      Debug.LogFormat("Some animal says '{0}'", animal.Speak());22 23    var cow = new Cow();24    Debug.LogFormat("The cow says '{0}'", cow.Speak());25   }26 }

原标题:跟Unity3D学代码优化

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录