版本:2022.3
语言:英语
脚本编译
条件编译

特殊文件夹和脚本编译顺序

Unity 保留了一些项目文件夹名称以标示内容具有特殊用途。其中一些文件夹会影响脚本编译的顺序。这些文件夹名称包括:

  • Assets
  • Editor
  • Editor 默认资源
  • Gizmos
  • Plugins
  • Resources
  • Standard Assets
  • StreamingAssets

有关这些文件夹的更多信息,请参阅 特殊文件夹名称

预定义程序集

Unity 会根据脚本在项目文件夹结构中的位置,将脚本编译为四个不同的阶段。对于每个阶段,Unity 会创建一个单独的 CSharp 项目文件 (.csproj) 和一个预定义的程序集。(如果没有满足编译阶段的脚本,Unity 不会创建相应的项目文件或程序集。)

当脚本引用在其他阶段编译(因此位于不同程序集)的类时,编译顺序非常重要。基本规则是,当前阶段之后编译的内容无法被引用。当前阶段或更早阶段编译的内容完全可用。

编译阶段如下所示

阶段 程序集名称 脚本文件
1 Assembly-CSharp-firstpass 位于名称为 Standard Assets、Pro Standard Assets 和 Plugins 的文件夹中的运行时脚本。
2 Assembly-CSharp-Editor-firstpass 位于名称为 Editor 的文件夹中的编辑器脚本(位于顶层文件夹 Standard Assets、Pro Standard Assets 和 Plugins 内的任何位置)。
3 Assembly-CSharp 位于非 Editor 文件夹中的所有其他脚本。
4 Assembly-CSharp-Editor 所有剩余脚本(位于名为 Editor 的文件夹中的脚本)。

注意:Standard Assets 仅在 Assets可用于您的游戏或项目中的任何媒体或数据。一个资产可能来自 Unity 外部创建的文件,如 3D 模型、音频文件或图像。您还可以在 Unity 中创建一些资产类型,如动画控制器、音频混合器或渲染纹理。有关更多信息,请参阅 资产工作流程
词汇表 中查看
根目录中工作。

您可以通过创建程序集定义文件来使用自己的程序集组织项目中的脚本。定义自己的程序集可以减少在执行不相关的代码更改时需要重新编译的代码量,并提供对其他程序集依赖性的更多控制。有关更多信息,请参阅 脚本编译 - 程序集定义文件

脚本编译
条件编译