本文内容
Asset Processor快速扫描模式
更快的扫描模式 通过在检查文件哈希值之前使用时间戳跟踪源资产变化,加快了资产处理器的启动扫描。这在任何情况下启动资产处理器时都能节省时间。你可以随时切换扫描模式,无需重启资产处理器,包括在资产扫描过程中。资产处理器会在会话之间保存你的偏好。
启用 “更快扫描 ”后
- 资产处理器将源资产最后修改时间的时间戳与上次处理该文件的时间戳进行比较。如果时间戳相同,则跳过对该源资产的处理。
- 如果时间戳不同,资产处理器会创建源资产内容的哈希值,并与上次处理源资产时的哈希值进行比较。如果两者匹配,则跳过对源资产的处理。
- 当内容的哈希值匹配时,时间戳可能不匹配,这有几个原因:
- 某些版本控制配置可能会导致同一源资产具有不同的时间戳。
- 某些存档格式(如 ZIP)会截断时间戳,因此,放入 ZIP 文件中的源资产随后会被移除,其时间戳也会被截断。
- 有时,内容创建者可能会重新保存文件而不做更改。
- 当内容的哈希值匹配时,时间戳可能不匹配,这有几个原因:
- 如果源资产内容的哈希值不同,标准资产处理流程就会开始,调用源资产上所有相关构建器的创建任务。
禁用 “更快扫描 ”时
- 资产处理器会在其跟踪的每个源资产上为每个处理这些源资产的构建程序调用创建任务。
- 如果该构建程序上源资产的 “创建任务 ”结果的指纹与上次运行时的指纹一致,则跳过该构建程序的 “处理任务”。
启用或禁用 “更快扫描 ”后,如果创建程序或文件的指纹发生变化,相关作业也将重新运行。构建程序作者在更改构建程序的逻辑时会修改构建程序指纹,使用该构建程序的所有作业都必须重新运行。文件指纹会检查源代码或作业的依赖关系是否发生变化,如果上游文件被修改,则会强制重新运行作业。
注意:在任何一种扫描模式下,资产处理器都不会检查缓存中在未运行时所作的更改。应避免对资产缓存中的文件进行修改;这些修改不会被 O3DE 工具跟踪,并可能随时被覆盖。
选择一种扫描模式
资产处理器图形用户界面默认启用 “更快扫描模式”,但资产处理器批处理默认禁用。
要在图形用户界面中禁用 “更快扫描模式”,请执行以下操作:
- 在 Asset Processor 中选择工具选项卡。
- 取消勾选 Faster Scanning Mode 选项。
注意:禁用 “更快扫描模式 ”时,将使用文件哈希值来检查更新的源资产和源依赖关系。这将大大增加分析时间。
您可以使用下面的命令行选项来激活 ** 资产处理器批**的 “Asset Processor Batch”。
AssetProcessorBatch.exe --zeroAnalysisMode
快速扫描模式反馈
更快扫描模式会反馈找到、处理和跳过的文件数量。在资产处理器中,该信息显示在Logs选项卡中。在 “ Asset Processor Batch ”中,该信息会发送到 stdout
,如下面的输出示例。
5303 files reported from scanner. 2903 unchanged files skipped, 2400 files processed
源资产扫描
分析源资产时,资产处理器会执行一系列低成本检查。如果其中任何一项检查失败,源资产就会通过正常的、不变的分析管道,快速扫描模式对该源资产没有任何影响。
开销 | 检查 |
---|---|
非常低 | 作为资产处理器启动的一部分,为扫描的每个文件收集时间戳信息。 |
非常低 | 通过将资产生成器指纹与之前的流程作业进行比较,检查是否有任何 ** 资产生成器**的版本或指纹发生变化。 |
非常低 | 将源资产时间戳与资产数据库中的时间戳进行比较。 |
低 | 查询资产数据库文件表,获取以前处理任务中的每个资产及其时间戳的列表。 |
低 | 查询资产数据库来源表,获取每个来源资产的资产生成器指纹列表。 |
全面扫描
即使快速扫描模式处于活动状态,您也可以执行全面扫描。全面扫描将执行下表中的分析操作。成本估算为低的操作占总扫描时间的 1%以下。 2
开销 | 分析 |
---|---|
低 | 确定哪些资产构建者负责构建资产。 |
低 | 根据资产数据库检查源资产,获取有关以前流程作业的信息。 |
低 | 将新工作指纹与之前的工作指纹进行比较。 |
中 | 生成任务指纹,其中包括源资产和依赖项的时间戳以及资产生成器的版本。 |
高 | 检查资产缓存,确保之前为源资产生成的每个产品资产都仍然存在。 |
非常高 | 向已注册的资产创建者发送创建作业请求,以便他们为作业队列生成作业。 |
如果在扫描过程中发现的源资产符合以下所有条件,则可将其排除在重新分析之外:
- 源资产在磁盘上未发生变化(其时间戳与资产数据库中的时间戳一致)。
- 源资产的依赖关系在磁盘上没有变化(源依赖关系时间戳与资产数据库中的时间戳一致)。
- 源资产的最新进程任务在无错误或警告的情况下成功执行。
- 处理源资产的资产生成器的版本和指纹没有改变。
- 没有新的资产创建程序可以处理源文件。
- 没有可能对源文件进行操作的资产创建程序被删除。
- 没有资产生成器更改过源文件集。
执行全面扫描
全面扫描会检查资产缓存中的产品资产,并重建相应的源资产。要开始全面扫描,请按以下步骤操作:
- 在资产处理器中选择Tools 选项卡。
- 选择开始扫描。
注意:如果资产缓存出现问题,执行全面扫描可能会解决问题。如果全面扫描无法修复资产缓存,可以通过删除项目中的Cache
目录来重建整个资产缓存。如果您是制作基于 BuilderSDK 的资产生成器的工程师,则不建议删除缓存。
删除 “资产缓存 ”以绕过或解决某个问题应作为最后的解决方案。重建缓存后,问题可能无法解决。即使问题得到了解决,删除和重建缓存所耗费的时间也可能比解决根本问题所需的时间更多。相反,建议您将问题记录下来,并与团队共享该信息。 等到管道工程师能够调查问题后再删除缓存。