一、前言
我在使用Unity.4.26+SteamVR2.6.1开发VR应用的时候,需要使用菜单键来呼出用户的交互UI界面,但是我现在没法调用这个菜单键的呼出事件。SteamVR2.0之后的版本就不在像之前那样可以直接监听到每个按钮的事件,需要手动自己设置菜单按钮的绑定。
二、实现
2.1、按键绑定设置
导入SteamVR的插件到Unity中,点击菜单栏windows/SteamVR input打开如图1所示的SteamVR Input的设置界面,并点击Actions/In下面的的“+”来在default中增加动作定义,可以命名为“Menu",然后点击”Save and generate“保存,
最后点击“Open binding UI"打开按键的绑定设置界面如图2所示,左边的”当前按键设置”下面的“vive_controller"为系统默认的手柄设置,右边为旋转具体哪个硬件设备,如图2所示选中的是手柄,如果选中的是其他的如头盔,打开的将会是头盔的绑定设置界面。点击vive_controller的编辑按钮进入编辑界面
如图3所示在编辑界面中,默认为镜像模式,也即设置一边的手柄,另外的手柄会同步,如果想单独为某个手柄设置按键,可以不勾选这个镜像模式。找到菜单并点击右边的+为菜单按键进行实际的绑定,如图4所示
在弹出的选择面板中选择”按键“
然后 点击如图5所示的绑定按钮
在弹出的面框中可以看到刚设置的Menu,如图6所示,选中它单击,
然后再点图5中更多选项下面的√来保存设置,最终效果如图7所示,点击√保存好设置之后的按钮会变成如图7所示的笔状按钮,点击这个可以进行修改,然后点击”保存个人按键设置“,即可进行保存,保存后点击返回可以再界面中看到如图8所示的个人下面
的配置即为我们刚刚编辑好并保存的配置,如果点击了”替换默认按键设置“会再图8中出现官方按键设置,也即此时官方默认的按键设置被刚刚的设置替换了,当然这些设置都只是针对当前的工程有效。
2.2、代码实现
新建一个用来测试的脚本,代码如下:
[SerializeField]private SteamVR_Action_Boolean menu = SteamVR_Input.GetBooleanAction("Menu");public SteamVR_Input_Sources curIndex;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){if (menu.GetStateDown(curIndex)){Debug.Log("ddddddddd");}}
再控制面板上设置如图9所示 ,其中Menu选择2.1设置的Menu,curIndex为SteamVR_Input_Sources 的索引,是用来获取具体的设备索引的,这里可以选择Any,因为只在左、右手柄中绑定了该按键
最后查看打印的信息,实现完毕。
三、总结
3.1、先要按键绑定其实相比以前稍显复杂,不过据说是为了大一统的设备绑定,相对开发者还是更方便;
3.2、代码现在写起来特别简单。
如果觉得《Unity+SteamVR开发——获取按键事件》对你有帮助,请点赞、收藏,并留下你的观点哦!