AssetDatabase.IsAssetImportWorkerProcess
Declaration
public static bool IsAssetImportWorkerProcess();Возвращаемое значение
логическое true если выполняется в рабочем процессе импортирования ассетов; false если выполняется в основном процессе Редактора.
Описание
Определяет, является ли текущий процесс рабочим процессом импорта ассетов.
Этот метод позволяет коду импорта определить, выполняется ли он в основном процессе Unity Editor или в отдельном рабочем процессе импорта ассетов. Такие рабочие процессы — это долгоживущие процессы, которые взаимодействуют с основным редактором, чтобы импортировать ассеты параллельно. Каждый из них поддерживает собственное глобальное состояние, сохраняющееся между заданиями импорта, и изменения глобального состояния, сделанные в рабочих процессах, не отражаются в процессе основного редактора.
Изменение глобального состояния во время импорта ассетов может приводить к тому, что результаты импорта будут различаться у разных рабочих процессов и меняться со временем; это нарушает детерминированность обработки ассетов и ведёт к непредсказуемому поведению. Лучшая практика — писать код импорта без состояния и самодостаточно, опираясь на локальные переменные, параметры методов и возвращаемые значения, а не на статические поля, глобальные переменные и одиночки.
Используйте этот метод только тогда, когда нужно условно пропустить изменения глобального состояния, которые невозможно сразу отрефакторить. Например, с его помощью можно избежать регистрации объектов в синглтонах или записи в глобальные кэши при запуске рабочего процесса.