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

SearchService.CreateIndex

Declaration

public static void CreateIndex(ref string name, ref Search.IndexingOptions options, IEnumerable<string> roots, IEnumerable<string> includes, IEnumerable<string> excludes, Action<string,string,Action> onIndexReady);

Параметры

Параметр Описание
имя Уникальное имя индекса поиска.
варианты Набор параметров индексации.
корни Поиск корней индекса, например "Ассеты", чтобы индексировать все ассеты в разделе Ассеты.
включает Эксклюзивный список ассетов для индексирования. Если этот список пуст, то все будут индексироваться.
исключая Шаблоны для исключения ассетов, которые будут индексироваться под корнями.
onIndexReady Обратный вызов, который вызывается, когда индекс создан и готов к использованию.

Описание

Создание нового индекса поиска.

static string EnsureDecalPropertyIndexing()
{
    var materialDb = SearchService.EnumerateDatabases().FirstOrDefault(IsIndexingMaterialProperties);
    if (materialDb != null)
        return materialDb.name;

    if (!EditorUtility.DisplayDialog("Create decal material index",
        "Your project does not contain an index with decal material properties." +
        "\n\n" +
        "Do you want to create one now?", "Yes", "No"))
        return null;

    var dbName = "Decals";
    SearchService.CreateIndex(dbName,
        IndexingOptions.Properties | IndexingOptions.Dependencies |
        IndexingOptions.Types | IndexingOptions.Keep,
        roots: null,
        includes: new string[] { ".mat" },
        excludes: null,
        (name, path, finished) =>
        {
            Debug.Log($"Material index {name} created at {path}");
            finished();
        });
    return dbName;
}

static bool IsIndexingMaterialProperties(ISearchDatabase db)
{
    if (string.Equals(db.name, "Materials", StringComparison.OrdinalIgnoreCase))
        return true;
    return (db.indexingOptions & IndexingOptions.Properties) == IndexingOptions.Properties
        && (db.includePatterns.Count == 0 || db.includePatterns.Contains(".mat"));
}