Unity 6.3
0 онлайн 62 гостей 3 в системе
Вход

AssetDatabase.IsAssetImportWorkerProcess

Declaration

public static bool IsAssetImportWorkerProcess();

Возвращаемое значение

логическое true если выполняется в рабочем процессе импортирования ассетов; false если выполняется в основном процессе Редактора.

Описание

Определяет, является ли текущий процесс рабочим процессом импорта ассетов.

Этот метод позволяет коду импорта определить, выполняется ли он в основном процессе Unity Editor или в отдельном рабочем процессе импорта ассетов. Такие рабочие процессы — это долгоживущие процессы, которые взаимодействуют с основным редактором, чтобы импортировать ассеты параллельно. Каждый из них поддерживает собственное глобальное состояние, сохраняющееся между заданиями импорта, и изменения глобального состояния, сделанные в рабочих процессах, не отражаются в процессе основного редактора.

Изменение глобального состояния во время импорта ассетов может приводить к тому, что результаты импорта будут различаться у разных рабочих процессов и меняться со временем; это нарушает детерминированность обработки ассетов и ведёт к непредсказуемому поведению. Лучшая практика — писать код импорта без состояния и самодостаточно, опираясь на локальные переменные, параметры методов и возвращаемые значения, а не на статические поля, глобальные переменные и одиночки.

Используйте этот метод только тогда, когда нужно условно пропустить изменения глобального состояния, которые невозможно сразу отрефакторить. Например, с его помощью можно избежать регистрации объектов в синглтонах или записи в глобальные кэши при запуске рабочего процесса.