1. 介绍
简介
HUAWEI VR SDK for Unity(以下简称HVR SDK),是为华为VR眼镜开发者用户提供的SDK平台。
开发者通过Unity平台,集成HVR SDK,可快速搭建基于华为VR眼镜和华为手机的VR场景平台,开发应用及游戏。
您将建立什么
在这个Codelab中,您将使用hvrsdk-xxx.unitypackage实现简单的VR应用开发。
您将会学到什么
- 如何集成HVR SDK,开发VR应用
- 如何响应手柄射线碰撞检测事件
2. 您需要做什么
硬件要求
- 华为VR眼镜一台,用于体验VR应用
- 华为手机一部,用于运行VR应用
- 一根数据线(VR眼镜自带),用于连接VR眼镜与手机
软件要求
- Unity5.6.x – Unity2.18.2.x版本
- EMUI8.1及以上版本
- HVR SDK 3.0.0.17及以上版本
3. 集成HVR SDK
新建Unity工程并导入HVR SDK
- 打开Unity,新建3D工程,如下图所示
- 依次点击Assets->Import Package->Custom Package,如下图所示
- 在弹出的对话框选择已下载的hvrsdk-3.0.0.x.unitypackage,点击Import,即可导入,如下图所示
注意:
- 导入时若弹出如下提示框,请选择点击 "I Made a Backup, Go Ahead!" ,如下图所示,否则编译出的应用会有找不到接口的问题。
在场景中添加HUAWEI VR相机
为了让场景能够显示成VR模式,首先需要添加华为VR相机,即HVRCamera,目录为Assets/HVR/Prefabs,添加方法为鼠标点击HVRCamera,并按住鼠标左键拖入至Hierarchy工作区,并且删除工程建立时自动生成的相机MainCamera,如下图所示。
在场景中添加HUAWEI VR手柄
为了场景中能用华为VR手柄交互,需要添加HUAWEI VR手柄预制件,即将Assets/HVRController/Prefabs目录下的HVRController、HVREventSystem拖到场景中,如下图所示。
UI响应手柄射线碰撞检测
添加手柄预制件后,若要用手柄射线与场景中未添加碰撞器的UI交互,需要UI监听并响应手柄射线检测事件,如下示例说明:
在场景中添加一个Canvas,并挂一个Button作为Cavas的子物体, 取消勾选Canvas上Graphic Raycaster脚本,绑定HVRGraphicRaycaster.cs脚本,并将LineRender拖拽绑定至RayObject,如下图所示
至此,该Button就可以监听到手柄射线碰撞检测的事件。
若该Button要响应点击事件,接收到点击事件后,锁定场景姿态,示例代码如下,并将Click脚本绑定到Button上, 即可实现。
public class Click : MonoBehaviour {
void Start () {
HVREventListener.Get(transform.gameObject).onClick = OnPointerClick;
}
private void OnPointerClick(GameObject go){
if (go == transform.gameObject) {
HVRLogCore.LOGI(TAG, "OnPointerClick");
HvrApi.GetHelmetHandle ().SetPoseLock (true);
}
}
}
编译配置生成APK
至此,一个简单的VR场景开发完成,根据如下操作编译打包生成APK:
- 选择Unity界面中File->Build Settings...,在弹出Build Settings对话框中,Platform选择Android;
- 点击对话框中的Player Settings...,在出现的Inspector页面下,选择Other Settings,勾选Multithreaded Rendering选项;
- HVR SDK暂不支持Vulkan,建议勾选Auto Graphics API选项;
- 在Package Name设置包名,如com.huawei.vrdemo,如下图所示。
点击Build Settings对话框中的Build生成APK,或者连接手机再点击Build And Run直接安装到手机。
4. 恭喜你
干得好,您已经成功完成了Codelab并学到了:
- 如何集成HVR SDK,开发VR应用
- 如何响应手柄射线碰撞检测事件