ShortcutManager.RegisterTag
Declaration
public static void RegisterTag(string tag);public static void RegisterTag(Enum e);Параметры
| Параметр | Описание |
|---|---|
| метка | Идентификатор контекстной строки. |
| e | Идентификатор перечисления контекста. |
Описание
Зарегистрирует метку как пользовательский контекст, используемый для фильтрации ярлыков после определения контекста окна.
Используйте этот метод для определения контекстов, которые распространяются на окна Редактора или охватывают определенные состояния окна и элементы управления GUI.
using UnityEditor; using UnityEditor.ShortcutManagement; using UnityEngine;
public class MyWindow : EditorWindow { const KeyCode shortcutKey = KeyCode.A;
public enum MyTool { EmptyTool, ShortcutTool }
MyTool tool; MyTool Tool { get => tool; set { if (tool == value) return;
ShortcutManager.RegisterTag(tool = value); Debug.Log($"{tool} tool registered"); } }
bool customTag; bool CustomTag { get => customTag; set { if (customTag == value) return;
customTag = value; var tag = nameof(customTag);
if (customTag) { ShortcutManager.RegisterTag(tag); Debug.Log($"{tag} enabled"); } else { ShortcutManager.UnregisterTag(tag); Debug.Log($"{tag} disabled"); } } }
[Shortcut("Tags/No Tag", typeof(MyWindow), shortcutKey)] static void NoTagShortcut() { Debug.Log($"Shortcut for MyWindow without tag context executed"); }
[Shortcut("Tags/Shortcut Tool", typeof(MyWindow), "MyTool.ShortcutTool", shortcutKey)] static void ShortcutToolShortcut() { Debug.Log($"Shortcut for MyWindow with 'MyTool.ShortcutTool' tag context executed"); }
[Shortcut("Tags/Custom Tag", typeof(MyWindow), nameof(customTag), shortcutKey)] static void CustomTagShortcut() { Debug.Log($"Shortcut for MyWindow with {nameof(customTag)} tag context executed"); }
[MenuItem("Window/My Window")] static void OpenWindow() => EditorWindow.GetWindow(typeof(MyWindow)).Show();
void OnGUI() { EditorGUILayout.LabelField("Tools"); Tool = (MyTool)EditorGUILayout.EnumPopup("Custom Tool", Tool); CustomTag = EditorGUILayout.Toggle("Custom Tag", CustomTag);
EditorGUILayout.Space(); EditorGUILayout.LabelField($"The default binding for window shortcuts is {shortcutKey}"); } }
При использовании этих тегов, будьте осторожны, чтобы не оставить зарегистрированными устаревшие теги. Это может привести к появлению нескольких доступных ярлыков, что откроет окно конфликта ярлыков. Используйте UnregisterTag для отмены регистрации тегов.
Если вы используете перегрузку с перечислением, Unity автоматически убирает теги, соответствующие прежним значениям этого перечисления.
Unity также обеспечивает встроенную поддержку некоторых энумов. Например, UnityEditor.Tool и UnityEditor.ViewTool.
Дополнительные ресурсы: UnregisterTag.