前言

大家好,本文将会为大家讲解Unity如何在编辑器环境下为自定义方法配置快捷键.

正文

首先创建一个脚本,在文件头加入:
    
    
using UnityEditor . ShortcutManagement ;
随便写一个类,定义一个 静态 , 无参 或者 只有一个ShortcutArguments类型 参数的方法:
    
    
static void TestFun ( ShortcutArguments arguments ) { }
给这个方法添加 Shortcut 特性
    
    
[ Shortcut ( ) ]
根据 Shortcut文档 的表述,该特性一共有4个参数,分别是
  • id
string 类型,表示该快捷键的名称以及身份号,可以用 斜杠 / 分级(总共两级),第二级可以使用中文,例如"MyShortCut/快捷键测试".
  • context
Type 类型,该参数限定为 EditorWindow 的子类(测试的时候还提示可以是UnityEditor.ShortcutManagement.IShortcutToolContext 接口类型的实现类,但是我在2021版本并没有找到这个接口),在添加了这个参数后,可以通过方法中的参数获取到当前窗口的信息,换句话说,这个参数是用于 限定 快捷键生效于哪些窗口.
  • defaultKeyCode
KeyCode 类型,看到这个类型大家都懂的,就是触发用的哪个键.
  • defaultShortcutModifiers
ShortcutManagement.ShortcutModifiers 类型,可以理解为组合键,功能键,这个参数是个flag枚举类型,包括Ctrl键(Mac为Control键),Alt键(Mac为Option键)以及Shift键,使用的时候组合起来.
--------你好我是 -------- 分割线 --------
让我们完善一下代码:
    
    
[ Shortcut ( "MyShortcut/你好" , KeyCode . H , ShortcutModifiers . Action ) ] static void TestFun ( ShortcutArguments arguments ) { Debug . Log ( "Hello World " ) ; }
接下来回到Unity中 等待编译 ,然后在 Edit=>Shortcuts打开快捷键窗口:
可以看到我们写的方法已经显示在界面中了:
如果我们添加的快捷键与现有快捷键存在冲突的话,往上翻,可以在 Category 窗口中找到 Binding Conflicts 项目,在这里会列出冲突的键位.
除此之外还有 ClutchShortcut 特性,被称为离合式快捷键,语法一致,区别在于只有在按下和松开的时候触发,而 Shortcut 则是按下会一直触发,在快捷键管理窗口中以 淡粉色 标志.
至此,如果我们只是想简单地给编辑时方法添加一个快捷键的话,目前的内容已经足够了,但是还有个窗口的传入参数没有讲,我们下期再见吧!
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐