Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

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.