Параметры
importedAssets | Массив путей к импортируемым активам. |
deletedAssets | Массив путей к удаленным ресурсам. |
movedAssets | Массив путей к перемещенным активам. |
movedFromAssetPaths | Массив исходных путей для перемещенных ресурсов. |
didDomainReload | Логическое значение установлено в true, если произошла перезагрузка домена.. |
Описание
Вызывается после завершения импорта любого количества ресурсов (когда индикатор выполнения ресурсов достигает конца).
Этот вызов может произойти после повторного импорта вручную или при перемещении ресурса или папки ресурсов в новое место в окне проекта. Каждый элемент строкового массива содержит путь к файлу относительно папки Assets в корне проекта. importedAssets
содержит пути ко всем ресурсам, используемым в операции. Каждый последовательный индекс movedAssets
и movedFromAssetPaths
относится к одному и тому же ресурсу.
Если вы выполняете массовую операцию с несколькими отдельными ресурсами, а не с папкой, содержащей эти ресурсы, эта функция будет вызываться один раз для каждого объекта, при этом каждый отдельный ресурс будет единственным элементом в различных массивах.
OnPostProcessAllAssets вызывается, когда база данных активов завершает импорт активов. Вы можете безопасно выполнять любые операции с базой данных активов из этого обратного вызова, например загружать, импортировать, перемещать или удалять активы.
OnPostProcessAllAssets следует использовать для инициализации после перезагрузки домена, если инициализация требует операций с активами, таких как загрузка ресурсов. Параметр didDomainReload
можно проверить, была ли перезагрузка домена. Все перезагрузки домена вызывают вызов OnPostprocessAllAssets.
Примечание. Если ваш код вызывает импорт каких-либо новых ресурсов во время этого обратного вызова, OnPostProcessAllAssets будет вызываться снова после завершения импорта новых объектов.
Обратите внимание, что эта функция должна быть объявлена как static
, то есть она не будет вызываться правильно, если она объявлена как функция экземпляра.
Порядок, заданный GetPostprocessOrder, не влияет на эту функцию, вместо этого порядком можно управлять, определяя зависимости с помощью следующих атрибутов:
- RunAfterClassAttribute, RunBeforeClassAttribute
- RunAfterAssemblyAttribute, RunBeforeAssemblyAttribute
- RunAfterPackageAttribute, RunBeforePackageAttribute
Примечание. Также доступна версия этого обратного вызова без параметра didDomainReload
(OnPostprocessAllAssets(string[] importAssets, string[] deleteAssets, string[] moveAssets, string[] moveFromAssetPaths))
using UnityEngine;
using UnityEditor;
class MyAllPostprocessor : AssetPostprocessor
{
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths, bool didDomainReload)
{
foreach (string str in importedAssets)
{
Debug.Log("Reimported Asset: " + str);
}
foreach (string str in deletedAssets)
{
Debug.Log("Deleted Asset: " + str);
}
for (int i = 0; i < movedAssets.Length; i++)
{
Debug.Log("Moved Asset: " + movedAssets[i] + " from: " + movedFromAssetPaths[i]);
}
if (didDomainReload)
{
Debug.Log("Domain has been reloaded");
}
}
}