Unity3D教程:四步解决高级脚本编译

来源:互联网 发布:查询数据库所有表 编辑:程序博客网 时间:2024/05/17 08:56

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 命名空间,你必须把脚本放到这些文件夹中。例如,增加菜单项或自定义导航, 你必须把相应的脚本放到这些文件夹中。这些脚本能够访问上级组中的脚本。Unity3D教程手册

3、在“Editor”中的脚本,然后进行编译。

跟上步的情况基本相同,不同点在于这些脚本不能访问下级组中的脚本。这在编写编辑器代码时会出现一些问题, 因为你不能编辑下级组中的脚本。 可以通过两种方式来解决:

(1)、移动想要访问的脚本到“Plugins”文件夹中。

(2)、利用 JavaScript 的动态类型化功能。在JavaScript中,你不需要知道所使用的类的类型。例如,GetComponent函数和 SendMessage函数都仅仅使用一个字符串来代替类型。

4、其他脚本最后进行编译。

不在上面提到的文件夹中的脚本将最后进行编译。这些脚本有权访问 “Standard Assets”、“Pro Standard Assets”和“Plugins”文件夹中的脚本,这使得你可以在不同语言脚本之间进行交互。例如,如果你想要创建一个 JavaScript,并在其中使用一个 C#脚本。你可以把 C#脚本放到“Standard Assets”文件夹中,而把 JavaScript放到该文件夹的外面。这样javaScript就可以直接访问C#脚本了。Unity3D教程手册

第一组(“Standard Assets” 、“Pro Standard Assets”和“Plugins”文件夹)中的脚本在编译时会比较耗时,因为它们在编译的同时,第三组(“Editor”文件夹)也在进行预编译。因此,如果你想减少编译的时间,可以把第一组中的脚本移到第四组中去,但我们并不推荐这样做。

针对 Unity版本进行条件编译,这段代码用来在指定的 Unity版本中启用一些可用的游戏特性。
01
// Specific version define including the minor revision
02

03
  #if UNITY_2_6_0
04

05
  // Use Unity 2.6.0 specific feature
06

07
  #endif
08

09
  // Specific version define not including the minor revision
10

11
  #if UNITY_2_6
12

13
  // Use Unity 2.6.x specific feature
14

15
  #endif
16