Pico 4 Enterprise(企业版)与Unity的交互-打包运行及UI交互篇

关于Pico 4E的有线串流调试,请看Pico 4 Enterprise(企业版)与Unity的交互-有线串流调试篇,本篇从零开始介绍打包到头盔中独立运行的的方法。另外,这里不需要用到串流软件或者SteamVR。

目录

[1. 环境设置](#1. 环境设置)

[2. 设置Edit->Project Settings](#2. 设置Edit->Project Settings)

[3. 建立测试场景](#3. 建立测试场景)

[4. 打包运行测试场景](#4. 打包运行测试场景)

[5. 运行失败的可能性判断](#5. 运行失败的可能性判断)

[6. PICO与UI交互](#6. PICO与UI交互)


1. 环境设置

(1)与有线串流调试一样,Unity在安装时必须加入Android平台;

(2)新建工程,普通工程即可;

(3)选择Windows->Package Manager,在Unity Registry中搜索xr,安装XR Interation Toolkit和OpenXR Plugin;

在安装XR Interation Toolkit的过程中有一个提示,选"Yes",并且工程会重启一下;

安装完成后,导入第一个实例,等下需要用到其中的配置;

(4)安装Pico Unity Integration SDK:打开Pico开发者官方网站下载Pico运行环境,下载SDK并且将这个压缩包解压缩到工程文件夹内;

在Package Manager的界面中点"+"号,选择第一项Install package from disk,从上面的这个解压缩文件夹中,选中package.json文件,打开后自动安装到项目中;

安装完成后有下面的页面,选择"Apply";

2. 设置Edit->Project Settings

(1) 在Edit->Project Settings->Player中,选择Android的选项卡->Other Settings

一直往下拉,看到Identifaction这一项,在其中的Minimum API Code中选择"Android 10.0 (API level 29)";

(2)后续几项参照下述设置,这些在新版Unity系统中几乎都是默认设置;

(3)设置KeyStore:统一选项卡,继续向下拉,看到"Publishing Settings"一项,这里需要设置发布的key。不知道为什么要这样做,总之不设置最后的Build通不过。这里就不再赘述设置方法,详情参照官方文档:签名关联的 APK 数量超出限制如何处理?

(4)设置Edit->Project Settings-> XR Plug-in Management ,在安卓平台的选项卡中选择PICO。如果没有PICO这个选项,就是之前没有正确安装Pico Unity Integration SDK;

(5)后面的Project Validation中,只要是有需要修复的,就可以点一下"Fix All",它将会自动修复,或者提示修复方式;

(6)PICO平台设置:菜单栏中选择"PICO",这个只要是安装了PICO Integration SDK都会出现在这里,需要设置一下设备号,这个设备号可以照抄File->Build Setting->Android->Run Device中的设备号(括号内的号码,这一步需要使用数据线连接头盔和电脑才能看见)

3. 建立测试场景

这一步与Pico 4 Enterprise(企业版)与Unity的交互-有线串流调试篇中的6. 建立测试场景无异,这里就不再赘述。

4. 打包运行测试场景

(1)保存场景,打开File菜单->Build Settings,如果平台还是Windows,请切换到Android平台;

(2)连接设备:使用Type-C线将PICO头盔连接到电脑,如果电脑没有Type-C端口,可以使用Type-C转USB3.0线连接;

(3)头盔连接后,就能看到设备号,选中这个设备号;另外点击"Add Open Scenes",加入测试场景;

(4)按Build And Run ,会有提示将当前项目保存到电脑硬盘的某个位置,并且会在头盔中安装运行,带上头盔后,就能看到我们的测试场景,并且可以使用左右手柄摇杆实现移动和旋转;

5. 运行失败的可能性判断

我经历过多次运行失败,有时是程序闪退,有时是场景中有黑屏,或者还有手柄无法起旋转、平移作用的......之后不断尝试各种设置,可以有如下排除错误的方法;

(1)OpenXR和PICO两项不能同时选择,我测试过,如果同时选择,场景中的手柄不可用;

(2)Project Settings->Player->安卓平台中的Other Settings,其中的Auto Graphics API需要取消勾选,并且在下面的API选择中,将OpenGLES3的顺序调整在第一位,否则容易造成黑屏闪退;

(3)在File->Build Setting中,下面这一项需要注意改成Use Player Settings,不知道为什么它总是自己乱改;

(4)总之,打包运行不成功,无非是Project Settings中的Player中的Other Settings的几个选项,或者Publish Settings的密码设置,以及XR Plug-in Managment中关于Android平台的几项设置,测试几次可以找到合适的选项;

6. PICO与UI交互

在头盔中运行场景时,想退出场景却找不到方法,手柄上的所有按键都试过了,短按、长按、组合按,除了截了一堆图之外毫无用处,最后还是按头盔启动按钮强制关机,因此在头盔中制作一个退出游戏的按钮很有必要。

(1)建立和设置Canvas:在Hierachy空白处点右键建立Canvas;

在Canvas组件中,选择WorldSpace模式,并将头盔的摄像机拖入Event Camera一栏;

添加Tracked Device Graphic Raycast组件,原有的Graphic Raycast取消勾选,让Canvas接受手柄射线;

(2)设置EventSystem:取消原有的Standalone Input Module,添加XR Controller(Action - based)组件;

(3)创建按钮,调整位置:在Canvas下创建一个Button(我这里是Button-TestMeshPro,第一次使用时需要导入一下),调整Canvas和Button的位置,直到XR的摄像机能够看见它(我已经将场景默认的Main Camera删除了)。

注意,尽量使用缩放调整Canvas和Button大小,否则文字容易失真。

(4) 建立脚本QuitScene.cs,关联到按钮事件中,脚本如下:

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;

public class QuitScene : MonoBehaviour
{
    public void Quit()
    {
        XRSettings.enabled = false;
        Application.Quit();
        
    }
}

将脚本挂在场景中任一物体上,这里就挂在Canvas上了,在Button的On Click()中添加一项,将挂有脚本QuitScene.cs的Canvas拖入,选择脚本中的Quit()函数;

(5)重新Build工程到头盔中,运行如下,按下按钮就退出游戏,回到头盔系统中;

相关推荐
君莫愁。6 小时前
【Unity】搭建基于字典(Dictionary)和泛型列表(List)的音频系统
数据结构·unity·c#·游戏引擎·音频
红黑色的圣西罗13 小时前
Unity UGUI下优化需要射线检测类的UI元素的一种方式
unity·游戏引擎
Thomas_YXQ14 小时前
Unity3D 图形渲染(Graphics & Rendering)详解
开发语言·unity·图形渲染·unity3d·shader
_深海凉_16 小时前
OmniParser技术分析(一)
深度学习·目标检测·ui·自动化
秋石兰1 天前
element UI汉语维语双语显示
vue.js·ui·elementui
ZH`浩2 天前
element-ui el-date-picker限制日期时间选择范围
vue.js·ui·elementui
类人_猿2 天前
Unity自定义区域UI滑动事件
ui·unity·游戏引擎·滑动事件
寒山李白2 天前
什么是全栈?
运维·服务器·前端·后端·ui·部署·全栈