Unity 6.3
0 онлайн 106 гостей 3 в системе
Вход
Ассеты и медиа Шаг 51 из 148

Детерминизм импорта ассетов

Детерминистский импортер ассетов всегда производит одинаковые результаты с одинаковыми вводными данными и набором зависимостей. Недетерминизм возникает, когда один и тот же файл ассетов производит разные результаты импорта, обычно через кэшированные результаты импорта.

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

Недетерминированный код импортера ассетов

Обычной причиной недетерминизма являются любые импортеры ассетов, созданные с помощью экземпляров , импортированных с помощью скриптовили AssetPostprocessor. Убедитесь, что любые созданные вами импортеры с помощью скриптов являются детерминистическими. Зарегистрируйте зависимости импорта, номера версий бумп и избегайте создания недетерминистического кода AssetPostprocessor или ScriptedImporter. Дополнительные сведения см. в Зависимости импорта и детерминизм.

Недетерминированные виды ассетов

Некоторые ассеты, генерируемые Unity Editor, являются недетерминированными и могут производить различные двоичные выходы при регенерации, даже с идентичными исходными данными и настройками.

Чтобы поддерживать детерминистические сборки, не восстанавливайте эти ресурсы, если исходное содержимое не изменилось, и сохраняйте ранее созданные или сгенерированные данные под контролем версий. Перестраивайте lightmaps или другие созданные ресурсы только при изменении исходного содержимого, а не в рамках каждой процедуры сборки.

Тип актива Поведение
Карты освещения Повторное изготовление lightmaps для каждой сборки производит различные двоичные данные, даже при одной и той же настройке освещения. Это потому, что система изготовления включает не только округление с плавающей точкой, но и шум выборки, который может сделать lightmaps не воспроизводимыми.
NavMesh Построить NavMeshes при одинаковых условиях входа и окружающей среды. Однако NavMeshes чувствителен к операциям с плавающей точкой, потому что Unity рассчитывает NavMesh на основе мешей сцены. Поэтому NavMesh может работать по-разному на других архитектурах.
Созданные ассеты на основе выборки шума Создание ассетов на основе выборочных текстур шума или другой случайности может генерировать ассеты по-разному каждый раз.

Проверка детерминированных ассетов

Перед построением ассетов можно проверить, являются ли импортированные ассеты детерминированными, с помощью аргумента командной строки -consistencyCheck. Также можно использовать окно Окно Import Activity для проверки причин повторного импорта и временных меток.

Вы можете отключить автоматическую очистку артефактов при анализе импортных данных следующим образом:

EditorUserSettings.artifactGarbageCollection = false

Это предотвращает Unity удаления предыдущих артефактов импорта. Library папка очищает все исторические данные импорта.

Исследование недетерминистических ассетов

Чтобы получить дополнительную информацию о недетерминистических ассетах в вашем проекте, проверьте файл журнала Редактора. Чтобы открыть журнал:

  1. Откройте Консоль окно (Окно > Общие положения > Консоль).
  2. Выберите меню Дополнительно (a) и выберите Открыть Журнал Редактора.

В журнале редактора несоответствия отображаются в следующем формате:

ConsistencyChecker - guid: <asset_guid>, dependenciesHash.value: <dep_hash_a>, importResultID: <result_id_a>, producedFiles[0].extension: , producedFiles[0].contentHash: <content_hash_a>
ConsistencyChecker - guid: <asset_guid>, dependenciesHash.value: <dep_hash_a>, importResultID: <result_id_b>, producedFiles[0].extension: , producedFiles[0].contentHash: <content_hash_b>
Importer(<importer_name>) generated inconsistent result for asset(<asset_guid>) <asset_path>

Дополнительные сведения см. в Проверка согласованности процесса импорта.

Дополнительные ресурсы