SteamVR_Events监听的先后顺序
在SteamVR插件中,SteamVR_Events的DeviceConnected这个事件是监听设备连接的,这个监听有一个坑,在监听到设备连接时有时无法马上获得SteamVR_TrackedObject中改变后的index值,具体如下描述操作。
----------------------------------------------------------------以下为问题描述,解决方案在最后------------------------------------------------------------
新建一个空场景,如图1。(注意场景中gameobject的顺序)
图1
图1中的三个物体均挂载监听DeviceConnected的脚本,脚本内容如图2,在监听到连接时马上去获取SteamVR_TrackedObject中的index的值,此时现将手柄全部关闭,即没有手柄连接,然后运行demo。
图2
打印结果如图3
图3
此时手柄还未连接,所以可以看到vrRightEIndex与vrLeftEIndex均为NONE,现在在demo运行时将手柄连接,触发此连接监听(第一次触发是因为头显设备连接),打印如图4,此时的SteamVR_TrackedObject如图5
图4
图5
图4可以看到监听事件在CameraRig之后添加的可以即刻获取到连接之后的index值,但之前添加的只能获取到连接之前的index值。
---------------------------------------------------------------------解决办法----------------------------------------------------------------------------------------
建议需要用到设备连接状态监听时,确保事件监听必然是在之后添加(例:用代码开启或关闭),这样就可以在监听到设备连接时即刻可以获取到index的值。