Version: 2021.2
The SearchProvider class
Performing a search

Registering a Search Provider

To add a new Search Provider, create a function and tag it with the SearchItemProvider attribute, as in the following example:

[SearchItemProvider]
internal static SearchProvider CreateProvider()
{
    return new SearchProvider(type, displayName)
    {
        filterId = "me:",
        fetchItems = (context, items, provider) =>
        {
            var itemNames = new List<string>();
            var shortcuts = new List<string>();
            GetMenuInfo(itemNames, shortcuts);

            items.AddRange(itemNames.Where(menuName =>
                    SearchProvider.MatchSearchGroups(context.searchText, menuName))
                .Select(menuName => provider.CreateItem(menuName,
                                            Path.GetFileName(menuName), menuName)));
        },

        fetchThumbnail = (item, context) => Icons.shortcut
    };
}
  • The function must return a new SearchProvider instance.
  • The SearchProvider instance must have the following:
  • A unique type. For example, Asset, Menu, or SceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
    See in Glossary
    .
  • A displayName to use in the Filters pane.
  • The optional filterId provides a search token for text-based filtering. For example, p: is the filter ID for Asset searches.

Registering a Search Provider shortcut

To register a shortcut for a new provider, use:

[UsedImplicitly, Shortcut("Help/Quick Search/Assets")]
private static void PopQuickSearch()
{
    // Open Search with only the "Asset" provider enabled.
    QuickSearchTool.OpenWithContextualProvider("asset");
}

You can map shortcuts to keys or key combinations using the shortcuts manager.

The SearchProvider class
Performing a search
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961