版本:Unity 6 (6000.0)
语言English
  • C#

SearchService.CreateIndex

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们确实会阅读用户提出的每个修改建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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);

参数

name 搜索索引的唯一名称。
options 索引选项集。
roots 搜索索引根目录,例如“Assets”以索引 Assets 下的所有资源。
includes 要索引的资源的独占列表。如果此列表为空,则将索引所有内容。
excludes 要排除在根目录下索引的资源的模式。
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"));
}