Version: 2021.1

SearchItem

class in UnityEditor.Search

切换到手册

描述

Search items are returned by the search provider to show to the user after a search is performed. The search item holds all the data that is used to sort and present the search results. Some members of a SearchItem can be specified in an asynchronous callback (see SearchItem.fetchThumbnail, SearchItem.fetchDescription, etc).

SearchItems are generally created using the SearchProvider.CreateItem function. This example shows how to create a SearchItem with all the members.

[SearchItemProvider]
internal static SearchProvider CreateProvider()
{
    return new SearchProvider(id, name)
    {
        active = false,
        filterId = "hex:",
        priority = 99999, // put example provider at a low priority
        showDetailsOptions = ShowDetailsOptions.Description | ShowDetailsOptions.Preview,
        fetchItems = (context, items, provider) =>
        {
            var expression = context.searchQuery;
            if (expression.Length == 6 && IsHex(expression))
            {
                expression = "#" + expression;
                items.Add(provider.CreateItem(context, expression, GetColorName(expression),
                    "Look at this " + GetColorName(expression) + " color!",
                    CreateTextureFromColor(expression, 64, 64), null));
            }
            return null;
        },
        fetchPreview = (item, context, size, options) =>
        {
            return CreateTextureFromColor(item.id, (int)size.x, (int)size.y);
        },
    };
}

This examples shows how to create SearchItem where most members will be "fetched" when needed (generally on first display):

private static IEnumerable<SearchItem> FetchItems(SearchContext context, SearchProvider provider)
{
    var sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    while (index == null || !index.IsReady())
        yield return null;
    foreach (var e in index.Search(context.searchQuery.ToLowerInvariant(), context, provider))
    {
        var item = provider.CreateItem(context, e.id, e.score, null, null, null, e.index);
        item.options &= ~SearchItemOptions.Ellipsis;
        yield return item;
    }
}

Provide fetch functions when defining the SearchProvider:

[SearchItemProvider]
internal static SearchProvider CreateProvider()
{
    return new SearchProvider(providerId, "Dependencies")
    {
        active = false,
        filterId = $"dep:",
        isExplicitProvider = true,
        showDetails = true,
        showDetailsOptions = ShowDetailsOptions.Inspector | ShowDetailsOptions.Actions,
        onEnable = OnEnable,
        fetchItems = (context, items, provider) => FetchItems(context, provider),
        fetchLabel = FetchLabel,
        fetchDescription = FetchDescription,
        fetchThumbnail = FetchThumbnail,
        trackSelection = TrackSelection,
        toObject = ToObject
    };
}

静态变量

noneA search item representing none, usually used to clear the selection.

变量

contextContext used to create that item.
dataSearch provider defined content. It can be used to transport any data to custom search provider handlers (i.e. `fetchDescription`).
descriptionIf no description is provided, SearchProvider.fetchDescription will be called when the item is first displayed.
idUnique ID of the search item for the search provider.
labelDisplay name of the search item.
optionsFlags that dictate how the search item is displayed and used.
previewLarge preview of the search item. Usually cached by fetchPreview.
providerBack pointer to the search provider.
scoreThe item relevance score will affect how the item gets sorted by the search provider. Lower scored items have more relevance and are prioritzed.
thumbnailIf no thumbnail is provided, SearchProvider.fetchThumbnail is called when the item is first displayed.

构造函数

SearchItemConstruct a search item. A search item needs to have at least a unique ID for a given search query.

公共函数

CompareToCheck if two SearchItems have the same ID.
EqualsCheck if two SearchItems have the same ID.
GetDescriptionFetch and format description.
GetHashCodeDefault Hash of a SearchItem.
GetLabelFetch and format label.
GetPreviewGets the search item preview if available, otherwise the preview is fetched at this time.
GetThumbnailGets the search item thumbnail if available, otherwise the thumbnail is fetched at this time. The thumbnail is usually used in list view compared to the grid view.
ToObjectReturns any valid Unity Object held by the search item.