特殊文件夹和脚本的编译顺序
大多数情况下,你可以为项目中的文件夹选择任意你喜欢的名称,但是 Unity 因为一些特殊原因而保留了一些名称。其中,有部分命名会影响到脚本的编译顺序。从本质上看,脚本编辑过程分为 4 个独立的阶段,而一个脚本何时被编译,则取决于它所在的父文件夹。
当一个脚本必须引用其他脚本中的类时,这个问题变得尤为明显。基本规则是,先编译的脚本不能引用后编译的脚本。也就是说,处于同一编译阶段的所有脚本都是可引用的,所有更早编译的脚本也是可引用的。
还有一种特殊情况,一个脚本是用某种语言编写的,它必须引用另外一个脚本,而第二个脚本是用别的语言编写的(例如,一个 UnityScript 文件声明了定义在 C# 文件中的类的变量)。这种情况的规则是,被引用的类必须在早期阶段被编译。
4 个编译阶段如下:
第 1 阶段:文件夹 Standard Assets、Pro Standard Assets 和 Plugins 中的运行时脚本。
第 2 阶段:文件夹 Standard Assets、Pro Standard Assets 和 Plugins 下 Editor 中的编辑器扩展脚本。
第 3 阶段:不在文件夹 Editor 中的所有脚本文件。
第 4 阶段:所有剩余的文件(例如,文件夹 Editor 中的脚本文件)。
一个常见的例子是,一个 UnityScript 文件需要引用 C# 文件中的类。你可以把 C# 文件放入 Plugins 文件夹,把 UnityScript 放入普通文件夹。如果不这么处理,就会报错,提示找不到 C# 类。
注意:文件夹 Standard Assets 只在根目录 Assets 下起作用。