Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Класс SearchProvider выполняет поиск определенных типов элементов и управляет миниатюрами, описаниями и подфильтрами. .

Он имеет следующий базовый API:

public class SearchProvider { public SearchProvider(string id, string displayName = null); // Creates an Item bound to this provider. public SearchItem CreateItem(string id, string label = null, string description = null, Texture2D thumbnail = null); // Utility functions to check whether the search text matches a string. public static bool MatchSearchGroups(string searchContext, string content); public static bool MatchSearchGroups(string searchContext, string content, out int startIndex, out int endIndex); // The provider's unique ID. public NameId name; // Text token to "filter" a provider (for example, "me:", "p:", and "s:"). public string filterId; // This provider is only active when a search explicitly specifies it with // its filterId. public bool isExplicitProvider; // Handler to fetch and format the label of a search item. public FetchStringHandler fetchLabel; // Handler to provide an async description for an item. Called just before // Search displays the item. // Allows a plug-in provider to fetch long descriptions only when // Search needs them. public FetchStringHandler fetchDescription; // Handler to provider an async thumbnail for an item. Called just before // Search displays the item. // Allows a plug-in provider to fetch/generate previews only when // Search needs them. public PreviewHandler fetchThumbnail; // Handler to support drag interactions. It is up to the SearchProvider // to properly set up the DragAndDrop manager. public StartDragHandler startDrag; // Called when the selection changes and Search can track it. public TrackSelectionHandler trackSelection; // MANDATORY: Handler to get items for a search context. public GetItemsHandler fetchItems; // A Search Provider can return a list of words that help the user complete // their search query. public GetKeywordsHandler fetchKeywords; // List of sub-filters that are visible in the FilterWindow for a // SearchProvider (see AssetProvider for an example). public List subCategories; // Called when the Search window opens. Allows the Provider to perform // some caching. public Action onEnable; // Called when the Search window closes. Allows the Provider to release // cached resources. public Action onDisable; // Int to sort the Provider. Affects the order of search results and the // order in which providers are shown in the FilterWindow. public int priority; // Called when Search opens in "contextual mode". If you return true // it means the provider is enabled for this search context. public IsEnabledForContextualSearch isEnabledForContextualSearch; }

Кэширование и освобождение ресурсов

Когда вы запускаете окно поиска, оно вызывает onEnable, что вы можете использовать для кэширования ресурсов.

Когда вы закрываете окно поиска, оно вызывает onDisable, что вы можете использовать для высвобождения ресурсов.

Инициализация

Поскольку в списке элементов поиска используется алгоритм виртуальной прокрутки, некоторые поля SearchItem (для например, метка, миниатюра и description) извлекаются по запросу, если они еще не предоставлены.

Чтобы заполнить эти поля после создания элементов, необходимо инициализировать SearchProvider. с определенными обработчиками (fetchLabel, fetchDescription, fetchThumbnail ).

Отслеживание выбора элемента

Вы можете зарегистрировать обратный вызов на trackSelection, чтобы Поиск делает что-то всякий раз, когда вы выбираете элемент в результатах поиска с помощью мыши или клавиатуры. Например, АктивЛюбой носитель или данные, которые можно использовать в вашей игре или проекте. Ресурс может быть получен из файла, созданного вне Unity, например, из 3D-модели, аудиофайла или изображения. Вы также можете создавать некоторые типы ресурсов в Unity, например контроллер аниматора, аудиомикшер или текстуру рендеринга. Подробнее
См. в Словарь
и СценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. Словарь
. Поставщики используют обратный вызов trackSelection для проверки связи с выбранным элементом в Поиске.

Включение перетаскивания

Некоторые службы поиска возвращают элементы, которые можно перетаскивать в сцену. Если вы создаете собственный поставщик, элементы которого поддерживают перетаскивание, реализуйте startDrag.

Например, поставщики Asset и Scene заполняют DragAndDrop. с соответствующими UID элементов, чтобы обеспечить правильное взаимодействие перетаскивания.

Включение поставщика в контекстный поиск

Когда вы открываете окно поиска с помощью сочетания клавиш Alt Shift + C, оно запускает контекстный поиск, то есть поиск ищет в окне, имеющем фокус.

При запуске контекстного поиска поставщики, которые переопределяют isEnabledForContextualSearch, проверяют если они должны быть включены, как в следующем примере:

// Taken from Scene hierarchy provider: // Makes the provider part of the contextual search if the Scene view or the // Hierarchy window has focus. isEnabledForContextualSearch = () => QuickSearchTool.IsFocusedWindowTypeName("SceneView") || QuickSearchTool.IsFocusedWindowTypeName("SceneHierarchyWindow");
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3