因为比赛原因,需要使用PicoSDK进行Unity VR的开发,又由于网络上资料比较少,很多坑都要自己踩。于是有了这篇文章,把Pico VR开发踩过的坑都记录下来。

——开发过程使用的PicoSDK版本为2.8.10

一.UI交互

关于Pico的UI交互逻辑怎么实现,官方在GitHub上只给了一个Demo,没有任何说明和文字描述……,这让我一开始根本摸不着头脑??

后面通过查阅大量教程和资料,并且实践多次总结得出以下几个步骤:

  • 1.首先删除场景自带的Main Camera
  • 2.添加预制体Pvr_UnitySDK,并且把预制体手柄组件ControllerManager放入Pvr_UnitySDK的子物体
  • 3.在Pvr_UnitySDK下的Event物体上添加Pvr_Input Module组件(这一步很关键)Confirm Btn就是你要设定的跟UI交互的按键。
  • 在需要交互的UI Canvas(画布)上添加Pvr_UI Canvas组件(同样很关键),并且要绑定Canvas组件的Event Camera支持的UI组件有Button、Slider、Toggle,Canvas下的Button等UI,要和Canvas在一个平面上。即不要拖动交互UI到其他地方。(通过测试发现Pvr_UI Canvas会给Canvas添加一个盒型碰撞体用于检测射线,所以如果按钮放到这个平面之外肯定就是无法交互的)

PS.经过反复测试发现,Pico手柄的射线与准星并不准,要把官方的Demo脚本Pvr_Controller Demo添加上去并给Head set Controller(这个可以随便赋值一个空物体只要它不为「null」Controller 0Controller 1赋值,它的手柄射线和准星才是完全匹配的。

添加Controller Demo脚本

勾选「Length Adaptive Ray」

记得勾选「Length Adaptive Ray」,这样准星停留在UI界面时会启用放大的动效。