Параметры
path | Путь актива, который в данный момент обрабатывается этим методом. |
Возвращает
void Массив строк, содержащий пути к активам, от которых вы хотите создать зависимости для актива, обрабатываемого в данный момент этим методом.
Описание
Статический обратный вызов, который можно реализовать для настройки зависимостей артефактов от других ресурсов и оптимизации порядка импорта ваших ресурсов.
Если вы реализуете этот метод в классе, унаследованном от ScriptedImporter, он будет вызываться для всех активов, которые ваш класс настроен для импорта, до начала импорта.
Ваш класс ScriptedImporter может затем вернуть массив путей к другим объектам, от которых объект зависит от результата импорта (что может зависеть от того, как ваш ScriptedImporter интерпретирует содержимое импортируемого файла).
Unity использует информацию, которую вы возвращаете этим методом, для импорта ресурсов в наиболее эффективном порядке, избегая необходимости многократного повторного импорта ресурсов, где это возможно.
Примечание. Каждый тип импортера имеет определенный приоритет в процессе импорта. Если вы укажете зависимость объекта, которая относится к другому приоритету импорта, она не переопределит приоритет импорта, поэтому повторный импорт все равно может произойти.
Для получения дополнительной информации о зависимостях артефактов см. AssetImportContext.DependsOnArtifact. Для зависимостей, о которых сообщается с помощью GatherDependenciesFromSourceFile, нет необходимости сообщать о них снова с помощью AssetImportContext.DependsOnArtifact. Однако можно добавить дополнительные зависимости артефактов, которые могут быть обнаружены во время фактического импорта.
Примечание. В вашей реализации этого метода или любых методов, которые вы вызываете из своей реализации, вы не должны вызывать ни один из следующих API:
- AssetDatabase.CreateAsset
- AssetDatabase.LoadAllAssetRepresentationsAtPath
- AssetDatabase.LoadAllAssetsAtPath
- AssetDatabase.LoadAssetAtPath
- AssetDatabase.LoadMainAssetAtPath
Unity выдает исключение, если вы вызываете любой из вышеперечисленных методов из реализации этого метода.
using UnityEditor.AssetImporters;
[ScriptedImporter(1, "my_asset_type", AllowCaching = true)]
class MyAssetImporter : ScriptedImporter
{
static string[] GatherDependenciesFromSourceFile(string path)
{
// Вызывается перед фактическим импортом для каждого измененного актива, который импортируется этим типом импортера (активы с расширением файла «my_asset_type» в этом примере)
// Извлекаем зависимости для актива, указанного в пути.
// Для обнаруженных зависимостей ассетов возвращаем их в массив строк, где строка — это путь к ассету
}
public override void OnImportAsset(AssetImportContext ctx)
{
// Нет необходимости вызывать ctx.DependsOnArtfact для зависимостей, о которых сообщается в GatherDependenciesFromSourceFile.
}
}