![cover](https://img-blog.csdnimg.cn/direct/9b2533e4d9854b7d8c9af88691750584.png)
Unity+pico4开发过程及问题记录,创建一个自己的pico安卓应用
自行创建pico安卓应用的全流程,包含手柄操作视角移动旋转等
版本说明
参考PICO developer 官方文档,本人unity版本为2022.116f1c1, PICO Unity Integration SDK-214.
sdk最新版官网下载:PICO Unity Integration SDK
博主使用的版本在这里提供一个链接:
以下过程均基于以上版本,按照如下流程操作比较合适。
环境搭建
①Unity编辑器需要支持安卓平台,在 添加模块 窗口处,勾选 Android SDK & NDK Tools 和 OpenJDK。务必勾选 Android Build Support 下的所有选项。
然后创建3D项目,然后进入Unity 编辑器页面。
②导入PICO Unity Integration SDK.将下载好的 SDK 压缩包解压,得到一个包含 package.json 文件的文件夹。
在Unity 编辑器页面内的上方菜单栏处,选择 Windows > Package Manager,在 Package Manager 窗口中,点击 + > Add package from disk。
选择 package.json 文件并导入。
导入完成后,将看到 PXR SDK Setting 窗口,关闭即可。
③启用 PICO XR 插件。从上方菜单栏处,选择 Edit > Project Settings。在 Project Settings 窗口中,点击 XR Plug-in Management > 安卓设置图标。
勾选PICO,不要勾选其他平台的选项。
④设置相关参数。
进入Project Settings > Player:
在上图中,展开安卓图标下的Other Settings标签页,
将 Minimum API Level 设置为 Android 10.0 (API Level 29)。将 Target API Level 设置为 Automatic (highest installed)。一般已默认为该设置。
在下方的 Configuration 设置区域,将 Scripting Backend 设置为 IL2CPP。将 Target Architectures 设置为 ARM64,并取消勾选 ARMv7。
接下来创建一个 XR 场景:
⑤升级 XR Interaction Toolkit.
进入Windows > Package Manager > XR Interaction Toolkit,将右侧samples下的内容都导入。
有关该工具包的版本选择,可以参考官方文档。
⑥添加XR摄像机。在 Hierarchy 窗口中,右击默认添加的 Main Camera,然后点击 Delete 将其删除。
点击 + > XR > XR Origin (Action-based),将 XR Origin 添加至场景。
XR Origin 物体包含以下元素:
选中 XR Origin。点击 Inspector 窗口底部的 Add Component 按钮。搜索 PXR_Manager 脚本,然后双击将其添加。
⑦配置手柄。
在 Hierarchy 窗口中,展开 XR Origin > Camera Offset,选中 LeftHand Controller。
在 Inspector 窗口中,点击 XR Controller (Action-Based) 面板右上角的 预设 图标。
双击添加 XRI Default Left Controller 设置文件,导入默认左手柄设置:
按相同步骤配置 RightHand Controller。
在 Hierarchy 窗口中,选中 XR Origin。点击 Inspector 窗口底部的 Add Component 按钮。搜索 Input Action Manager 脚本,然后双击将其添加。
在 Input Action Manager 脚本区域,展开 Action Assets 列表,将XRI Default Input Actions 将其添加至 Element 0 配置项。
至此,基础 XR 场景搭建完成。
自己开发的应用不希望有【版权保护】的检测,因此在导出前,在Unity上方菜单栏处,点击选择 PXR_SDK > Platform Settings。取消勾选User Entitlement Check:
否则受版权保护的限制,无法打开应用。具体可参考这篇文章。
导出及相关设置
①PICO4内是安卓平台,在 Build Settings 窗口中,从 Platform 列表处选择 Android。
点击 Switch Platform,若该按钮变为上图所示的Build,则表示平台切换成功。点击Build,将项目打包,输出如下文件:
②配置pico开发环境,参考官方文档,开启PICO一体机,前往设置>通用>关于本机,光标移至软件版本号,连续点击八次左右,左侧导航栏下方出现开发者,即可开启开发者模式。
点击开发者,打开右上角的USB调试开关:
然后使用数据线【usb-c】连接电脑和pico4,将打包出的apk文件直接复制到pico中的Download文件夹内,就传输成功了,只传apk就可以。接着在pico一体机内安装apk,查看效果。
手柄控制移动和旋转
现在为项目增加一些功能,通过手柄实现这样的效果:左手柄的摇杆控制视角前后左右移动,右手柄的摇杆控制视角旋转。
在 Hierarchy 窗口中,选中 XR Origin下的Camera Offset,点击 Inspector 窗口底部的 Add Component 按钮。搜索 Locomotion System, Continuous Move Provider(Action-based), Continuous Turn Provider(Action-based) 双击添加。
按照上图所示,将XR Origin拖到红色方框内,将Camera Offset拖到蓝色方框内,对黄色方框内的属性进行点选配置。Move Speed可以控制视角移动的速度,Turn Speed控制转向的速度。
按右手柄B、A键设定位置
在资源中找到XRI Default input Actions, 双击唤出面板,如上图所示。
点击Actions后面的+,新建两个action,分别命名为Upstairs和Downstairs, 点击将它们的ActionType设置为Button.
点击Upstairs后面的+,添加绑定Binding, 将Path改为secondaryButton [RightHand PICO Controller], Downstairs 同理,将Path改为primaryButton [RightHand PICO Controller].
在Hierarchy中新建空物体,命名为PICO_buttonInputs,将如下脚本拖到该物体上:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.XR.Interaction.Toolkit.Inputs;
public class PICO_buttonInputs : MonoBehaviour
{
// Start is called before the first frame update
public InputActionReference Upstairs;
public InputActionReference Downstairs;
public Transform picoXR;
void Start()
{
Upstairs.action.started += DoUpstairs;
Downstairs.action.started += DoDownstairs;
}
private void OnDestroy()
{
Upstairs.action.started -= DoUpstairs;
Downstairs.action.started -= DoDownstairs;
}
private void DoUpstairs(InputAction.CallbackContext obj)//13
{
picoXR.position += new Vector3(0, 1.0f, 0);
}
private void DoDownstairs(InputAction.CallbackContext obj)//1
{
picoXR.position -= new Vector3(0, 1.0f, 0);
}
}
将XR Origin和刚刚设定的两个action拖入脚本内相应位置,如果有自定的功能可以相应的修改代码,最好加一个平面在场景内方便看效果。
问题小结
博主尝试使用chfsgui工具【HTTP 文件共享服务器】在电脑和pico之间传输apk,可是在pico浏览器内下载出来的是zip形式,没有找到解压的办法,否则就可以无线传输了。
还有有关手柄抓取键切换材质、射线检测方面的以及unity内纹理相关出现的问题,下次继续分享(●’◡’●)
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)