Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Последовательность импорта

Средства импорта объектов, в том числе созданные вами средства импорта по сценарию, должны давать согласованные (детерминированные) результаты. Это означает, что они всегда должны создавать одинаковые выходные данные из одних и тех же входных данных и набора зависимостей
См. в Словарь
.

Чтобы убедиться, что это так для ваших импортеров, в базе данных активов есть два способа, с помощью которых вы можете проверить согласованность результатов импорта активов, которые в настоящее время находятся в вашем проекте. Есть два способа проверить согласованность:

  • Вручную повторно импортировать один или несколько объектов в редактор
  • Используйте аргумент командной строки -consistencyCheck, чтобы открыть редактор

Ручная проверка согласованности повторного импорта

При повторном импорте ресурса вручную Unity проверяет, соответствует ли новый результат импорта предыдущим результатам импорта из кэша.

Чтобы запустить повторный импорт вручную, щелкните объект правой кнопкой мыши и выберите Повторный импорт в контекстном меню.

Затем Unity проверяет полученный импорт на непротиворечивость. При обнаружении противоречивых результатов Unity печатает предупреждение в окне консолиокне редактора Unity, в котором отображаются ошибки, предупреждения и другие сгенерированные сообщения. Unity или ваши собственные скрипты. Подробнее
См. в Словарь
сведения о том, какой импортер вызвал проблему, например:

Импортер (<имя импортера>) сгенерировал несогласованный результат для актива (guid:) "<имя актива>"

Когда вы повторно импортируете корневой ресурс, Unity также повторно импортирует и выполняет проверку согласованности своих дочерних ресурсов.

Проверка согласованности командной строки

Второй способ выполнить проверку согласованности — открыть Unity с аргументом командной строки -consistencyCheck. При этом выполняется проверка согласованности всех ресурсов и импортеров в проекте.

Аргумент командной строки Описание Пример(ы)
-consistencyCheck Указывает редактору выполнить проверку согласованности при запуске. По умолчанию он выполняет «локальную» проверку (см. ниже). -consistencyCheck
-consistencyCheckSourceMode string Устанавливает источник для проверки согласованности при сравнении импорта активов. Возможны два значения: «local» или «cacheserver».

«локальный» означает, что он вызывает повторный импорт всех активов локально и проверяет, отличается ли импорт от предыдущего импорта.

«cacheserver» означает, что он запрашивает у сервера кеша метаданные для активов и сравнивает, совпадают ли результаты локально с тем, что находится на сервере кеша. В этом случае повторного импорта всех активов не происходит.

-consistencyCheckSourceMode local
-consistencyCheckSourceMode cacheserver

Все несоответствия, обнаруженные во время запуска, регистрируются в консоли, а также в файле журнала редактора.

Средство проверки непротиворечивости проверяет только те импортируемые ресурсы, которые можно кэшировать. Поэтому, если вы отключите кэширование для своего ScriptedImporter, проверка согласованности для этого импорта также будет отключена. См. AssetImporters.ScriptedImporterAttribute, чтобы узнать, как отключить кэширование для импортера со сценарием.

Для использования кэш-сервераавтономного приложения, которое можно запустить на локальном компьютере и которое хранит импортированные данные активов для сокращения время, необходимое для импорта активов. Подробнее
См. Словарь
в качестве источника проверки, см. документация Unity Accelerator.

Журнал редактора

При обнаружении несоответствий импортера вы можете найти дополнительную информацию о проблеме в журнале редактора. Сюда входят:

  • Какой объект вызвал сбой проверки целостности
  • 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 — не подключен к ускорителю/кэш-серверу

Отладка

Вы можете использовать инструмент «binary2text», расположенный в папке Data/Tools в вашей установке редактора Unity, чтобы изучить содержимое папки библиотеки, чтобы увидеть, что именно сгенерировал импортер.

Например:

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

Хеш-значение – это хеш контента объекта. Чтобы найти обнаруженное несоответствие и посмотреть, какой контент был создан во время проверки, просмотрите журнал редактора.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3