unity3d 脚本编译

来源:互联网 发布:windows7删除数据恢复 编辑:程序博客网 时间:2024/05/17 12:20
Unity把所有的脚本编译为.NET  dll文件,这些 dll文件将在运行时实时地进行汇编。这
使得Unity的脚本运行速度非常快,比传统的 JavaScript快 20倍左右,只比本地 C++代码慢
50%左右。在保存脚本时,Unity 便会花极少的时间对它们进行编译,在编译的过程中,你
可以看到在主窗口的右下角会显示一个小型旋转进展图标。 
脚本编译分为四步进行: 
1、在“Standard Assets”、“Pro Standard Assets”和“Plugins”中的脚本,首先
进行编译。 
一个文件夹中的脚本不能在另一个文件夹的脚本中直接使用,但可以通过使用
GameObject.SendMessage 来进行交互。 
2、在“Standard Assets/Editor” 、“Pro Standard Assets/Editor”和“Plugins/Editor”
中的脚本,其次进行编译。 
如果你想要使用 UnityEditor 命名空间,你必须把脚本放到这些文件夹中。例如,增加
菜单项或自定义导航, 你必须把相应的脚本放到这些文件夹中。这些脚本能够访问上级组中
的脚本。 
3、在“Editor”中的脚本,然后进行编译。 
跟上步的情况基本相同,不同点在于这些脚本不能访问下级组中的脚本。这在编写编辑
器代码时会出现一些问题, 因为你不能编辑下级组中的脚本。 可以通过两种方式来解决: (1)、
移动想要访问的脚本到“Plugins”文件夹中。(2)、利用 JavaScript 的动态类型化功能。在
JavaScript中,你不需要知道所使用的类的类型。例如,GetComponent函数和 SendMessage
函数都仅仅使用一个字符串来代替类型。 
4、其他脚本最后进行编译。 
不在上面提到的文件夹中的脚本将最后进行编译。这些脚本有权访问 “Standard Assets”、
“Pro Standard Assets”和“Plugins”文件夹中的脚本,这使得你可以在不同语言脚本之间进
行交互。例如,如果你想要创建一个 JavaScript,并在其中使用一个 C#脚本。你可以把 C#
脚本放到“Standard Assets”文件夹中,而把 JavaScript放到该文件夹的外面。这样javaScript
就可以直接访问C#脚本了。 
第一组(“Standard Assets” 、“Pro Standard Assets”和“Plugins”文件夹)中的脚本在编
译时会比较耗时,因为它们在编译的同时,第三组(“Editor”文件夹)也在进行预编译。因
此,如果你想减少编译的时间,可以把第一组中的脚本移到第四组中去,但我们并不推荐这
样做。 
针对 Unity版本进行条件编译 
Unity 2.6增加了一个 C#预编译器,它能够识别所使用的Unity版本并对特殊功能进行有
条件的访问。例如: 
// Specific version define including the minor revision 
#if UNITY_2_6_0 
// Use Unity 2.6.0 specific feature 
#endif 
 
// Specific version define not including the minor revision 
#if UNITY_2_6 
// Use Unity 2.6.x specific feature 
#endif 
 
这段代码用来在指定的 Unity版本中启用一些可用的游戏特性。注意,版本条件编译只
能用于Unity 2.6及其后的版本中。将来,Unity会提供一个更适合的定义来在脚本中标识所
使用的Unity版本。
0 0