推荐的开发框架是VRIF和Auto Hand - VR Physics Interaction,VRIF是我现在用的,其最大的优势就是一次开发多平台发布,可以发布到SteamVR平台、Quest平台及Pico平台,就主要的就是基于输入的统一,PC的VR有SteamVR2.0,安卓的有Unity 新版本输入系统,这Unity 新版本输入系统不限于VR,游戏手柄和键盘等,都可以接进来,理论上啥都能接,SteamVR2.0只适用于VR,废话不多说,下面说一下,SteamVR2.0如何使用自定义按钮,打包后也是正常使用的。
1、先创一个空场景,把玩家拉进来
2、创一个新的动作集(ABC)和一个新的动作(TestAction),Save and generate(保存生成一下)
3、打开BindingUI,绑定一下按钮(新的动作)与实体按键的映射,SteamVR提示有一个动作没绑定,绑定好后一定要按下替换默认绑定,不然打包出来用不了
4、打开SteaVR input Live view窗口,可以看到新的动作集ABC和动作TestAction
5、运行一下看状态
Not Use Yet说明,你定义好动作但没使用
5、写测试脚本使用这动作
using UnityEngine;
using Valve.VR;
public class Test : MonoBehaviour
{
private void OnEnable()
{
SteamVR_Actions.ABC.TestAction.onStateDown += TestAction_onStateDown;
}
private void OnDisable()
{
SteamVR_Actions.ABC.TestAction.onStateDown -= TestAction_onStateDown;
}
private void TestAction_onStateDown(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource)
{
Debug.Log($"板机值为{fromAction}");
}
}
6、挂上脚本,重新运行看状态
现在状态为Inactive,现是说明你是使用这动作但是,这动作的动作集没有激活,处于禁用状态
7、挂载和开启动作集,添加SteaVR2.0的挂载动作集的脚本,设开启动作集为\action\ABC
8、再次运行,看状态
按下变绿,由False变True,这时按钮就是真的可用了
这就是Change状态,是按钮可用了,若为深红色则为Not Bound,去看一下第三步,按键没绑定好,打包出来用不了去看一下,第三步没有替换默认按钮