默认情况下,Unity 在编辑器主进程中按顺序导入资产。但是,Unity 还支持某些类型资产的并行导入。并行导入使用多个进程同时导入资产,这比默认的顺序导入方法更快。
要启用并行导入,请选择编辑 (Edit) > 项目设置 (Project Settings) > 编辑器 (Editor),然后在资产管线 (Asset Pipeline) 部分下启用并行导入 (Parallel Import) 复选框。
Unity 的并行导入功能仅支持某些类型的资产。仅当编辑器执行标准资产数据库刷新时,才适用此功能;当编辑器在 Project 文件夹中检测到新的或修改的资产并自动导入时,才会发生此情况。
Unity 可以并行导入的特定资产类型包括:
在资产数据库刷新期间,始终按顺序导入其他类型的资产。
如果使用某些资产数据库 API 方法导入、刷新或创建纹理或模型资产,也会遵循此设置。如下:
由于并行导入在 Unity 编辑器的单独工作实例中运行,因此处理纹理或模型导入的任何 AssetPostprocessors 也将在该实例中生效,而不是在编辑器主进程中生效。
这些处理器的任何副作用都可能导致意外问题。例如,如果在执行后期处理期间修改 C# 类上的静态变量,则此修改不会影响编辑器中运行的代码。
为后期处理器编写的任何代码都应该始终是独立的、确定性的,并且不应该改变其运行的上下文。例如,不应更改编辑器设置或在磁盘上创建新资产。
遵循这些规则有助于处理器代码避免并行线程问题,并确保结果始终一致。
在资产管线 (Asset Pipeline) 设置中,有三个设置可用于控制导入工作进程的行为。这些设置特定于项目。
| 属性名称 | 描述 |
|---|---|
| 所需的导入工作进程数量 | 导入管线认为在此导入工作进程数量下,并行运行的效果最佳。 |
| 备用导入工作进程数量 | 要保留的最小工作进程数,即使它们处于空闲状态也是如此。 如果工作进程多于此数量,Unity 会关闭已空闲一段时间的导入工作进程以释放系统资产。此属性可用于管理 Unity 在某些进程空闲时如何平衡系统资源(与启动新导入工作进程所需的时间相比)。 如果您经常迭代模型、动画或纹理工作,因此经常导入成批的模型或图像文件,则可以通过增加此值来改善导入性能。 |
| 空闲导入工作进程关闭延迟 | 在关闭空闲工作进程之前等待的时间(以秒为单位)。 |
还可以控制 Unity 为新项目设置的所需的导入工作进程数量 (Desired Import Worker Count) 默认值。为此,请前往首选项 (Preferences) > 资产管线 (Asset Pipeline) > 导入工作进程数量百分比 (Import Worker Count %)。
创建新项目时,Unity 使用导入工作进程数量百分比 (Import Worker Count %) 值将项目的所需的导入工作进程数量 (Desired Import Worker Count) 值分配给系统上可用逻辑核心数量的百分比。
例如,如果系统有 16 个逻辑核心,并且此偏好设置为 25%,则新项目的所需导入工作进量数量 (Desired Import Worker Count) 为 4。如果将此值设置得太高,则导入工作进程需要与其他进程和系统资源(例如读取和写入文件)竞争。默认值 25% 适用于大多数情况。