版本:Unity 6(6000.0)
语言英语
  • C#

IShortcutContext

UnityEditor.ShortcutManagement 中的接口

提出更改建议

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读来自用户的每条建议更改,并在合适的情况下进行更新。

关闭

提交失败

出于某种原因,您的建议更改无法提交。请在几分钟后 重试。感谢您抽出宝贵时间帮助我们改进 Unity 文档的质量。

关闭

取消

描述

使用 IShortcutContext 通过定义快捷方式变为活动或不活动时的条件来创建您自己的快捷方式上下文。这些条件可以基于各种因素或任何其他相关的上下文信息。

using UnityEditor;
using UnityEditor.ShortcutManagement;
using UnityEngine;

public class ShortcutContextSample : EditorWindow
{
    public class CustomShortcutContext : IShortcutContext
    {
        public bool active
        {
            get
            {
                if (!(focusedWindow is ShortcutContextSample view))
                    return false;

                return view.toggleValue;
            }
        }
    }

    [Shortcut("Custom Shortcut Context/Sample Shortcut", typeof(CustomShortcutContext), KeyCode.Mouse1)]
    static void SampleShortcut(ShortcutArguments args)
    {
        Debug.Log("The sample shortcut was called.");
    }

    bool m_ToggleValue = false;
    public bool toggleValue => m_ToggleValue;

    CustomShortcutContext m_ShortcutContext = new CustomShortcutContext();

    [MenuItem("Window/Custom Editor Window")]
    public static void ShowWindow()
    {
        ShortcutContextSample wnd = GetWindow<ShortcutContextSample>();
        wnd.titleContent = new GUIContent("Custom Editor Window");
    }

    void OnGUI()
    {
        var content = new GUIContent("Toggle", "Toggle to activate the shortcut context.");
        m_ToggleValue = EditorGUILayout.Toggle(content, m_ToggleValue);
    }

    private void OnEnable()
    {
        ShortcutManager.RegisterContext(m_ShortcutContext);
    }

    private void OnDisable()
    {
        ShortcutManager.UnregisterContext(m_ShortcutContext);
    }
}

属性

active表示实现 IShortcutContext 的自定义快捷方式上下文是否处于活动状态。