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

Регистрация обработчика действий

Вы можете зарегистрировать действия для поставщика поиска. Пользователи могут получить доступ к зарегистрированным действиям с помощью значка Дополнительные параметры () в результатах поиска.

Примечание. Регистрация обработчика действий и регистрация службы поиска — это разные процессы. Вы можете зарегистрировать новые обработчики действий для существующих поставщиков услуг поиска.

Чтобы зарегистрировать действие, вы создаете функцию, помеченную атрибутом SearchActionsProvider. Эта функция должна возвращать IEnumerable<SearchAction>.

В следующем примере показано, как зарегистрировать действия для поставщика поиска активов.

[SearchActionsProvider] internal static IEnumerable<SearchAction> ActionHandlers() { return new[] { new SearchAction("asset", "select", Icons.@goto, "Select asset...") { handler = (item, context) => { var asset = AssetDatabase.LoadAssetAtPath<Object>(item.id); if (asset != null) { Selection.activeObject = asset; EditorGUIUtility.PingObject(asset); EditorWindow.FocusWindowIfItsOpen( Utils.GetProjectBrowserWindowType()); } } }, new SearchAction("asset", "open", SearchIcon.open, "Open asset... (Alt+Enter)") { handler = (item, context) => { var asset = AssetDatabase.LoadAssetAtPath<Object>(item.id); if (asset != null) AssetDatabase.OpenAsset(asset); } }, new SearchAction("asset", "reveal", SearchIcon.folder, "Show in Explorer") { handler = (item, context) => { EditorUtility.RevealInFinder(item.id); } } }; }

Действия при поиске

Класс SearchAction описывает действие и предоставляет обработчик для выполнения действия на определенном SearchItem.

public class SearchAction { public SearchAction(string providerType, string name, Texture2D icon = null, string tooltip = null); public ActionHandler handler; public EnabledHandler isEnabled; }

providerType – это уникальный идентификатор поставщика, для которого вы регистрируете действие.

ActionHandler имеет следующую подпись:

// item: item that needs the action to be executed. // context: search context of the SearchTool when the item is executed. public delegate void ActionHandler(SearchItem item, SearchContext context);

Действие можно настроить с помощью предиката isEnabled, который определяет, доступно ли действие для определенного элемента.

Действия контекстного поиска

Чтобы предоставить контекстные действия (щелчок правой кнопкой мыши) для определенных типов элементов в результатах поиска, зарегистрируйте действие с именем context для поставщика поиска.

Следующий пример взят из поставщика поиска объектов:

new SearchAction(type, "context", null, "Context") { handler = (item, context) => { var asset = AssetDatabase.LoadAssetAtPath<Object>(item.id); if (asset != null) { Selection.activeObject = asset; EditorUtility.DisplayPopupMenu( QuickSearchTool.ContextualActionPosition, "Assets/", null); } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3