Unity VR —— Pico开发_pico unity
一、基础设置
1.下载SDK
进入pico官网选择对应的SDK进行下载:开发资源 | PICO 开发者平台
为了以后的开发,我们将这里所有的SDK全部下载并且解压保存好
2.导入SDK
创建Unity项目,选择菜单栏 File - Build Settings 打开构建设置面板,选择Andriod平台,点击Switch Plaform切换到改平台:
选择菜单栏 Edit - Project Settings 打开项目设置面板,找到XR Plugin Management - 点击Install XR Plugin Management:
安装好之后长这样:(注意不同版本有差异)
XR Plugin Management是Unity 当中的XR插件管理器,安装好之后就可以在这里选择对应的底层插件,将当前开发的程序适配到不同的硬件平台中。由于本文记录的是Pico的开发,而在这个界面并没有关于Pico相关的底层插件的设置,所以需要我们自己导入Pico的SDK。
选择菜单栏 Window - Package Manager 打开包管理器界面 - 点击左上角的加号,选择 Add package from disk(从本地磁盘中导入)接下来选择之前下载并解压好的Unity Integration SDK文件夹,选中package.json文件,点击打开:
等待几秒导入成功后,Unity会跳出一个弹窗:
这里点击Yes,它会自动帮我们导入Unity 的新版输入系统InputSysytem,之后会重启Unity编辑器,重启后Unity会跳出一个这样的弹窗:
点击Apply,然后点击Close关闭
接下来我们导入用于串流的SDK,跟之前是一样的方式,点击Add package from disk后 选择Unity Live Preview Plugin文件夹中的package.json文件导入、
导入完成后我们打开包管理器查看:
会发现Unity自动帮我们导入了一个名为XR Interaction Tookit的包,版本为2.6.3,我们需要进行升级版本,再次点击左上角的加号,选择Add package from git URL,输入包名:com.unity.xr.interaction.toolkit 点击Add导入:
升级完成后,选择升级好的包,点击Samples,会显示出pico提供的示例包:
可以看到有很多的示例包可以供我们参考学习,这里选择Starter Assets进入Import导入,导入完成后Unity可能会出来一个弹窗,先将弹窗放到一边,接着再选择XR Device Simulator进入导入,完成后关闭包管理器界面,打开刚刚的弹窗(Project Settings界面),选择左侧的XR Plug-in Management,再选择Android平台,可以看到多了一个Pico的选项,我们将它勾选上:
接着再选择PC平台,勾选上PICO Live Preview选项:
接下来点击左侧的Project Validation - 选择Andriod平台,点击Fix All :
等待一段时间,Unity会自动将报错的设置进行修复(注意:这里可能会出现一个关于keyStore的错误,按照提示创建密钥并且设置密码修复即可)。至此,导入SDK相关完成。
二、功能实现
1.传送和移动
回到Unity场景当中,会发现自动添加了一个XR Origin物体:
它就是XR当中的玩家物体,并且它默认隐藏了场景中的MainCamera主相机,并且在它的子物体结构下会有一个Camera物体。
由于这个默认创建的XROrigin物体只能追踪头部而不能追踪手柄,所以这里我们可以把这个XROrigin删除掉。
场景中还有一个 XR Interaction Manager物体,这个物体上挂载的XRInteractionManager脚本是用于管理场景中所有的交互功能,是必要的,保留这个物体。
根据以下结构找到XR Origin预制体拖入到场景当中:
这个预制体是我们刚刚导入的Starter Assets示例包中包含的,我们也可以直接在搜索栏中中搜索这个预制体拖入场景。
这个物体已经集成了常用的一些交互功能,如移动、抓取、射线、传送等
要实现传送功能,我们需要一个可以传送的地面:在Hierarchy层级目录空白处右键 - 选择XR - Teleportation Area创建一个地面:
这个平面物体上挂载了一个Teleportation Area脚本,用于负责传送,我们在这个脚本的属性中找到Interaction Layer Mask选项修改为Teleport:
这个时候传送的功能就完成了,打包运行的话转动左手柄的摇杆即可实现自由移动,左右推动右手柄的摇杆可以实现人物的转向,向前推动右手柄的摇杆可以实现人物的传送。
2.抓取
接下来创建一个可以抓取的物体:在Hierarchy层级目录空白处右键 - 选择XR - Grab Interactable 会在场景中创建出来一个立方体:
这个立方体上也会挂载抓取相关的脚本
为了方便观察,再复制一个Grab Interactable立方体,并且赋予它们不同的材质(这里我设置的是绿色和蓝色):
选中蓝色方块,找到XR Grab Interactable脚本中的Far Attach Mode属性,修改为Near:
此时对于绿色方块来说,我们可以远距离操控它进行移动,而对于蓝色方块来说,我们在远距离抓取它时,它会直接飞到我们的手上。(打包可见效果)
3.UI面板
在Hierarchy层级目录空白处右键 - 选择XR - UI Canvas 创建UI画布,并且修改它的位置和缩放:
这里建议缩放xyz为0.01以方便观察
其他UI相关如按钮等就可以根据Unity基础的功能来实现了。