Version: 2022.2

SearchProvider.fetchDescription

切换到手册
public Func<SearchItem,SearchContext,string> fetchDescription ;

描述

Handler to provide an asynchronous description for an item. Is called when the item is about to be displayed. Allows a plugin provider to only fetch long descriptions when they are needed.

[SearchItemProvider]
internal static SearchProvider CreateProvider()
{
    return new SearchProvider("example_tree", "Trees")
    {
        filterId = "tree:",
        priority = 99999, // Put example provider at a low priority
        showDetailsOptions = ShowDetailsOptions.Inspector | ShowDetailsOptions.Actions,
        fetchItems = (context, items, provider) => FetchItems(context, provider),
        fetchThumbnail = (item, context) => AssetDatabase.GetCachedIcon(item.id) as Texture2D,
        fetchPreview = (item, context, size, options) => AssetDatabase.GetCachedIcon(item.id) as Texture2D,
        fetchLabel = (item, context) => AssetDatabase.LoadMainAssetAtPath(item.id).name,
        fetchDescription = (item, context) => AssetDatabase.LoadMainAssetAtPath(item.id).name,
        toObject = (item, type) => AssetDatabase.LoadMainAssetAtPath(item.id),
    };
}

private static IEnumerable<SearchItem> FetchItems(SearchContext context, SearchProvider provider)
{
    if (context.empty)
        yield break;

    // Yield items asynchronously which is the recommended way.
    foreach (var guid in AssetDatabase.FindAssets("t:Prefab tree " + context.searchQuery))
        yield return provider.CreateItem(context, AssetDatabase.GUIDToAssetPath(guid), null, null, null, null);
}