> 技术文档 > Unity VR —— Pico开发_pico unity

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基础的功能来实现了。