Version: 2021.1
LanguageEnglish
  • C#

SearchItem

class in UnityEditor.Search

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

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

Static Properties

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

Properties

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.

Constructors

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

Public Methods

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.