OOIII/

Unity-特殊文件夹及脚本编译顺序(翻译)

大部分情况下,你可以在项目中选择自己喜欢的名字来命名文件夹,但是Unity提供了一些包含特殊意义的文件名。这其中的一些文件夹对脚本的编译顺序会产生一定的影响。本质上来讲,有四个独立的脚本编译阶段并且脚本在哪个阶段被编译是有他们的父文件夹决定。

当一个脚本必须引用其他脚本定义的类时,这就显的很重要了。基本的规则是,任何在当前编译阶段之后编译的脚本不能被引用,任何在当前编译阶段编译或者早期编译的脚本是完全可以引用的。

另一种情况是,当一种语言的脚本必须引用另一种语言定义的类时(比如js声明一个C#脚本定义的一个类变量),这里的规则就是,被引用的类必须在早期阶段就被编译。

下面就是脚本编译的阶段:

阶段1:在文件夹“Standard Assets”, “Pro Standard Assets”and “Plugins”中的Runtime脚本。

阶段2:在文件夹“Standard Assets/Editor”, “Pro Standard Assets/Editor” and “Plugins/Editor”中的Editor 脚本。

阶段3:其他所有不在文件夹“Editor”中的脚本。

阶段4:所有剩余脚本(比如在“Editor”中的脚本)。

另外,如果资源根目录有一个“WebPlayerTemplates”文件夹,那么其中的脚本不会被编译。这可能跟其他特殊名字文件夹也在子文件夹的情况有些不同(例如,Scripts/Editor会被当成一个Editor脚本文件夹,但是Scripts/WebPlayerTemplates则不会阻止编译,即会被正常编译,不会特殊处理)。

一个常见的例子就是js脚本需要引用C#脚本定义的一个类,你可以把C#脚本放在“Plugins”文件夹中,并且js脚本放在其他的文件夹。如果不这样做,就会提示无法找到C#类的错误。

翻译自:http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html