AssetImporters.ScriptedImporter.GatherDependenciesFromSourceFile(string)
Параметры
| Параметр | Описание |
|---|---|
| путь | Путь к ресурсу, который в настоящее время обрабатывается этим методом. |
Возвращаемое значение
void Структурный массив, содержащий пути к ресурсам, для которых требуется создать зависимости для ресурса, в настоящее время обрабатываемого этим методом.
Описание
Статический обратный вызов, который вы можете реализовать, чтобы задать зависимости артефактов от других ассетов и оптимизировать порядок импорта ассетов.
Если вы реализуете этот метод в классе, наследующем ScriptedImporter, он будет вызван для всех ассетов, которые ваш класс настроен импортировать, ещё до начала импорта.
После этого ваш класс ScriptedImporter может вернуть массив путей к другим ассетам, от результата импорта которых зависит данный ассет (это может зависеть от того, как ваш ScriptedImporter трактует содержимое импортируемого файла).
Unity использует информацию, возвращаемую этим методом, для импорта ассетов в наиболее эффективном порядке, избегая необходимости повторно импортировать ассеты несколько раз, когда это возможно.
Примечание: у каждого типа импортёра свой приоритет в процессе импорта. Если вы укажете зависимость от ассета с другим приоритетом импорта, приоритет она не переопределит, и повторный импорт всё равно может произойти.
Дополнительные сведения о зависимостях артефактов см. AssetImportContext.DependsOnArtifact. Для зависимостей, о которых сообщалось с помощью GatherDependenciesFromSourceFile, нет необходимости сообщать их снова с помощью AssetImportContext.DependsOnArtifact. Тем не менее, допустимо добавлять дополнительные зависимости артефактов, которые могут быть обнаружены во время фактического импорта.
Примечание:
В вашей реализации этого метода или любых методов, которые вы вызываете из вашей реализации, вы не должны вызывать ни один из следующих APIs:
AssetDatabase.CreateAsset
AssetDatabase.LoadAllAssetRepresentationsAtPath
AssetDatabase.LoadAllAssetsAtPath
AssetDatabase.LoadAssetAtPath
AssetDatabase.LoadMainAssetAtPath
AssetImporter.GetAtPath
Unity вызывает исключение, если вы вызываете любой из вышеуказанных методов из вашей реализации этого метода.
using UnityEditor.AssetImporters;
[ScriptedImporter(1, "my_asset_type", AllowCaching = true)] class MyAssetImporter : ScriptedImporter { static string[] GatherDependenciesFromSourceFile(string path) { // Called before actual import for each changed asset that is imported by this importer type (assets having "my_asset_type" file extension in this example) // Extract the dependencies for the asset specified in path. // For asset dependencies that are discovered, return them in the string array, where the string is the path to asset }
public override void OnImportAsset(AssetImportContext ctx) { // There is no need to call ctx.DependsOnArtfact for the dependencies reported in GatherDependenciesFromSourceFile. } }