文章目录
1 创建unity项目
1.1 打开unity hub
打开unity hub,先点击左侧项目一栏,再点击右上角的新项目,弹出创建窗口后,选择urp模板,自定义项目名称和位置,取消勾选版本管理,最后点击创建项目即可(注意:我这里的unity版本为2020.3.37f1c1 lts)。
1.2 创建项目
点击创建项目后,第一次创建项目时,需等待一段时间加载,项目初始页面如下
2 配置项目
2.1 配置插件,导入sdk
1、点击windows下的package manager,按照图示步骤,下载安装xr interaction toolkit和xr plugin management 两个插件(插件在安装完毕后会重启项目,不要慌),其中在安装xr interaction toolkit时,会有一个弹框出现,点yes->no thanks即可,引入starter assets资源(该demo中含有已经配置好了的vr手柄参数)。
2、按照如下图示的步骤,点+,再点击从本地磁盘导入的方式导入pico的sdk,picosdk的下载点这里跳转。
2.2 搭建场景
1、先右键删除项目自带的main camera,因为自带的相机在vr设备(如pico4)中是看不到任何东西的,需要用xr下的摄像机,在项目的空白区域右键,选择xr下的xr origin(vr)。
2、最关键的一步来了,点开我们刚开始import的starter assets资源(在samples的xr interaction toolkit下),将xri default left controller左键摁住不松手,把他拖拽到lefthand controller的xr controller(action-base)上松开即可,同理,将xri default right controller拖拽到righthand controllerd的xr controller(action-base)上松开即可。这一步是把官方提供的demo中配置好的手柄参数直接拿来用,不用从0开始写一份脚本,节约时间。
2.3 编写脚本
1、在project窗口下,右键scripts目录,create->c# script,脚本名称自定义,我这里叫sceneswitch,双击打开进行编辑,
代码如下,
using unityengine;
using system.collections;
using unityengine.scenemanagement;
public class sceneswitch : monobehaviour
{
// use this for initialization
void start()
{
}
// update is called once per frame
void update()
{
}
public void jump0()
{
scenemanager.loadscene(0);//跳转到场景samplescene
}
public void jump1()
{
scenemanager.loadscene(1);//跳转到场景scene1
}
public void jump2()
{
scenemanager.loadscene(2);//跳转到场景scene2
}
}
2、新建场景,右键scene目录,create->scene,创建两个新的空场景scene1和scene2,双击scene1,在scene1中添加一个正方体,具体操作:在hierarchy窗口下,右键空白区域,3d object->cube即可,用于区分两个场景。(这两个场景都需要重复2.2的步骤)
2.4 pico项目配置
2.4.1 实现思路
为了切换场景,我们需要借助一个东西来实现这个功能,我这里采用的如下思路,
在xr origin的main camera下创建一个canvas,在上边创建一些ui组件,如可以与vr手柄射线交互的button组件,以及可用于文字展示的text组件,然后再将2.3中的脚本挂载到这些button上去,在vr环境下用手柄射线点击该button,button便执行挂载上边的对应脚本功能,即可实现场景切换的功能。(在xr origin的main camera下创建一个canvas的目的是为了让该ui界面不随着vr设备视野的变化而变化,让其始终保持在视野前方固定不变)
2.4.1 实现步骤
1、创建button(创建button的同时自动创建了canvas),步骤见下
2、重命名该button为down,意为切换到下一个场景,并调整button的位置和大小(也可根据个人喜好自行调整),步骤如下,
2.1、将button拖拽到左下角
2.2修改其属性,如下
3、挂载脚本到canvas上,步骤如下
4、将加载下一个场景的函数jump1挂载到down按钮上,如下
5、至此,我们就实现了一个切换到下一个场景的功能了,同理,我也可以安装上述步骤,添加一个up按钮(切换到上一个场景),步骤同上,只需修改在函数为jump2即可。
我们在scene1和scene2中重复同样的操作即可完成3个场景的循环切换,即samplescene->scene1->scene2->samplescene->scene1->scene2->samplescene->…
3 项目打包和运行部署
3.1 pico项目运行环境配置
这一步的配置是pico官方提供的项目配置,以保证你的应用能成功接入 xr 能力,完成构建并在 pico 设备上正常运行。具体详细步骤见pico官方文档的快速开始,点这里跳转。(其中第四步和第五步可不用配置)
3.2 打包运行
可以按照如下步骤进行打包运行,也可以参考官方提供的运行示例,点这里跳转。
场景创建完毕后,让我们将其打包为可在 pico 设备上运行的应用(即 .apk 文件)。
第一步:切换开发平台
pico xr 应用的目标编译平台是安卓平台。
1、从上方菜单栏处,选择 file > build settings。
2、在 build settings 窗口中,从 platform 列表处选择 android。
3、点击 switch platform。若该按钮变为 build,表示平台切换成功。
第二步:打包并运行场景
使用 unity 编辑器自带的 build 工具将 xr 场景构建为可在 pico 设备上运行的 apk 文件。步骤如下:
1、使用 usb 数据线连接 pico 设备和 pc。
2、在 build settings 窗口中,点击 add open scenes 将 samplescene 添加为待构建场景。再点击scene1/scene2,切换到该场景后,file->building settings,再点击add open scenes,将该场景添加到接下来打包后的apk文件中去。
3、将 run device 设置为 all compatible devices 或与 pc 连接的 pico 设备的型号。
4、点击 build and run。你将看到 build android 窗口。
5、选择 apk 文件的存储位置。unity 开始编译应用。编译完成后,pico 设备将自动运行该 apk 文件。
4 结语
本文主要是之前实验室的一个vr小项目所用到的技术,为了方便实验室的学弟学妹们后续接手,特写下此篇文章以作参考学习,关于本项目的一些后续技术,如优化模型、调整场景地平面高度和ui面板分布、美化vr场景以及实现多设备间跨语言通信(基于udp/tcp通信)。服务端(发送/接收数据):pc端、pico4,电脑客户端(发送/接收数据,并以图形可视化的形式展示数据),我会陆续产出相应的文章。
如遇问题,请在评论区积极留言,看到就会回复。
发表评论