Version: 2022.1

SearchProvider.isExplicitProvider

切换到手册
public bool isExplicitProvider ;

描述

This search provider is only active when specified explicitly using the filterId.

using UnityEditor;
using UnityEditor.Search;
using UnityEngine;

static class SearchProvider_isExplicitProvider
{
    internal static string type = "example_uppercase_isExplicitProvider";
    internal static string displayName = "example_UpperCase_isExplicitProvider";

    [SearchItemProvider]
    internal static SearchProvider CreateProvider()
    {
        return new SearchProvider(type, displayName)
        {
            filterId = "+",
            priority = 99999, // put example provider at a low priority
            isExplicitProvider = true,
            fetchItems = (context, items, provider) =>
            {
                var expression = context.searchQuery;
                expression += " -> " + expression.ToUpper();

                items.Add(provider.CreateItem(context, context.searchQuery.ToUpper(), context.searchQuery.ToUpper(), expression, null, null));
                return null;
            }
        };
    }

    [MenuItem("Examples/SearchProvider/isExplicitProvider")]
    public static void Run()
    {
        SearchService.SetActive(type);
        var view = SearchService.ShowWindow();
        // If we don't specify the filterId for an explicit provider, there will be no results.
        view.SetSearchText("uppercase String");
        Debug.Log(view.results.Count); // 0;

        view.Close();
        view = SearchService.ShowWindow();

        // Use the filterId for an explicit provider
        view.SetSearchText("+uppercase String");
        // There should be only one result with that specific description
        Debug.Log(view.results.Count); // 1;
        Debug.Log(view.results[0].description); // "uppercase String -> UPPERCASE STRING";
    }
}