版本:Unity 6 (6000.0)
语言:英语
脚本化导入器
文本资源

导入器一致性

资源导入器(包括您编写的任何脚本化导入器)应产生一致(确定性)的结果。这意味着它们应该始终从相同的输入和依赖项集生成相同的输出。

要验证您的导入器是否符合此要求,资源数据库提供了两种方法,您可以用来检查当前项目中资源的导入结果的一致性。检查一致性的两种方法是

  • 手动重新导入编辑器中的一个或多个资源

  • 使用-consistencyCheck命令行参数打开编辑器

手动重新导入一致性检查

手动重新导入资源会导致 Unity 检查新的导入结果是否与之前缓存的导入结果匹配。

要开始手动重新导入,请右键单击资源并从上下文菜单中选择重新导入

然后,Unity 会检查导入结果的一致性。如果检测到不一致的结果,Unity 会在控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。 更多信息
请参阅词汇表
中打印警告,并提供有关哪个导入器导致问题的详细信息,例如

导入器(<导入器名称>) 为资源(guid:<资源的 guid>)“<资源名称>”生成了不一致的结果

重新导入根资源时,Unity 还会重新导入其子资源并对其执行一致性检查。

命令行一致性检查

执行一致性检查的第二种方法是使用-consistencyCheck命令行参数打开 Unity。这会对项目中的所有资源和导入器执行一致性检查。

命令行参数 描述 示例
-consistencyCheck 指示编辑器在启动时执行一致性检查。默认情况下,它执行“本地”检查(请参见下文)。 -consistencyCheck
-consistencyCheckSourceMode 字符串 设置一致性检查器在比较资源导入时检查的源。有两个可能的值:“local”或“cacheserver”。

“local”表示它强制在本地重新导入所有资源,并检查导入是否与之前的导入不同。

“cacheserver”表示它会向缓存服务器请求资源的元数据,并比较本地结果是否与缓存服务器上的结果匹配。在这种情况下,不会重新导入所有资源。
-consistencyCheckSourceMode local
-consistencyCheckSourceMode cacheserver

启动期间发现的任何不一致都会记录到控制台以及编辑器日志文件中。

一致性检查器仅检查可缓存的资源导入。因此,如果您禁用脚本化导入器的缓存,则该导入的一致性检查也将被禁用。有关如何禁用脚本化导入器的缓存的详细信息,请参阅AssetImporters.ScriptedImporterAttribute

要使用缓存服务器作为验证源,请参阅Unity 加速器文档。

编辑器日志

检测到导入器不一致时,您可以在编辑器日志中找到有关该问题的更多信息。这包括

  • 导致一致性检查失败的资源

  • 该资源的 GUID

  • 资源导入结果的内容哈希值

  • 它与资源之前版本进行比较的方式

以下是一个显示导入器不一致的编辑器日志示例

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 07078a054d3f597b4c2cc47e8e4c0bde, producedFiles[0].extension: , producedFiles[0].contentHash: 8490a5ed35a4361d679e6055a386969e

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 07078a054d3f597b4c2cc47e8e4c0bde, producedFiles[1].extension: .info, producedFiles[1].contentHash: 4bd9140e19d2e44782f1131172e514ba

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 646d6432767729ea7d288c636183de97, producedFiles[0].extension: , producedFiles[0].contentHash: 5ca760170f85012ce16aa8c22e8d9ea1

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 646d6432767729ea7d288c636183de97, producedFiles[1].extension: .info, producedFiles[1].contentHash: 4bd9140e19d2e44782f1131172e514ba

Importer(ScriptedImporter:Assembly-CSharp::RandomImporter) generated inconsistent result for asset(guid:a1945cd7aab67441ba89015f97494624) "Assets/first.rand"

如果缓存服务器不可用,一致性检查器会在编辑器日志中打印警告。

如果项目尚未设置缓存服务器,则会打印以下消息。

ConsistencyChecker - 缓存服务器未启用

如果 Unity 无法连接到缓存服务器,则会打印此消息。

ConsistencyChecker - 未连接到加速器/缓存服务器

调试

您可以使用位于 Unity 编辑器安装程序的 Data/Tools 文件夹中的工具“binary2text”检查库文件夹的内容,以准确查看导入器生成的內容。

例如

./Data/Tools/binary2text ./myProject/Library/Artifacts/84/8490a5ed35a4361d679e6055a386969e output_file

哈希值是资源的内容哈希值。要查找报告的不一致并查看检查期间生成的内容,请查看编辑器日志。

脚本化导入器
文本资源