GoogleVRForUnity✨一款常用的谷歌VR插件教程

简介: GoogleVRForUnity✨一款常用的谷歌VR插件教程


🟥 开发的注意事项

1️⃣ 选用的Unity版本

建议2019的Unity版本,之后的版本会取消一些API,导致SDK报错。


2️⃣ 打包的注意事项

该插件打包时应只选用该Graphics API的设定,否则apk会闪退。


🟧 项目基本配置

复制 HelloVR 场景的如下内容到新场景,便完成了基础配置。

后面我们进行交互逻辑的编写即可。



🟨 凝视事件系统

以下是我写的凝视脚本,简化了原有的凝视方式。

将该脚本挂载在带有Collider的物体上,往该脚本公开的Event注册事件即可。

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
public class SkodeGazeEvent : MonoBehaviour
{
    private EventTrigger myEventTrigger;
    [Header("长凝视时长")] public float longGazeTime = 2;
    private float tempGazeTime;
    public UnityEvent pointerEnterEvent;
    public UnityEvent pointerExitEvent;
    public UnityEvent longGazeEvent;
    private void Awake()
    {
        myEventTrigger = GetComponent<EventTrigger>() ?? gameObject.AddComponent<EventTrigger>();
    }
    private void Start()
    {
        EventTrigger.Entry entryEnter = new EventTrigger.Entry
        {
            eventID = EventTriggerType.PointerEnter,
            callback = new EventTrigger.TriggerEvent()
        };
        entryEnter.callback.AddListener(PointerEnter);
        myEventTrigger.triggers.Add(entryEnter);
        EventTrigger.Entry entryExit = new EventTrigger.Entry
        {
            eventID = EventTriggerType.PointerExit,
            callback = new EventTrigger.TriggerEvent()
        };
        entryExit.callback.AddListener(PointerExit);
        myEventTrigger.triggers.Add(entryExit);
    }
    private void PointerEnter(BaseEventData arg0)
    {
        tempGazeTime = longGazeTime;
        pointerEnterEvent?.Invoke();
    }
    private void PointerExit(BaseEventData arg0)
    {
        tempGazeTime = 0;
        pointerExitEvent?.Invoke();
    }
    private void Update()
    {
        if (tempGazeTime <= 0)
            return;
        tempGazeTime -= Time.deltaTime;
        if (tempGazeTime <= 0)
        {
            longGazeEvent?.Invoke();
        }
    }
}


相关文章
|
9月前
|
存储 测试技术 区块链
阿里云、百度云及移动云对象存储横向性能对比测试
在企业的数字化转型进程中,我们观察到越来越多的公司将其IT基础设施迁移到云端。随着企业业务的持续运营,无论是储存、处理、分享还是删除,都会产生大量的数据,这就要求有一个既可靠又高效的系统来管理和存储这些信息。对象存储产品在这个场景中扮演了至关重要的角色。它们以一种可扩展、安全、持久的方式,有效地满足了对大规模非结构化数据存储的需求。 尽管市场上云计算提供商众多,各自都有自己独特的对象存储产品,面对这样的丰富选择,如何寻找最符合企业需求的产品呢?这正是企业今天寻求解答的问题。 在本篇文章中,我们将深入进行一项横向对比测试,专门对阿里云OSS、百度云BOS和移动云EOS这三大云服务提供商的对象
2717 0
|
存储 iOS开发
SwiftUI极简教程17:Gestures手势的使用
SwiftUI极简教程17:Gestures手势的使用
1045 0
SwiftUI极简教程17:Gestures手势的使用
|
6月前
|
vr&ar 图形学
PICO4开发实战一:节奏光剑(VR)(需求文档)
这篇文章是PICO4开发实战指南,详细介绍了开发一款名为“节奏光剑”的VR游戏的需求文档,包括从基础功能开发到交互体验优化、场景体验优化、UI设计、游戏关卡设计等多个开发阶段的详细规划和说明。
PICO4开发实战一:节奏光剑(VR)(需求文档)
|
8月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
196 2
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
跟着penguins案例学Seaborn之Pairplot
跟着penguins案例学Seaborn之Pairplot
165 1
|
6月前
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
492 0
使用keytool查看Android APK签名
|
8月前
|
算法 定位技术 图形学
unity2d实现一个全方位的无限随机地图
unity2d实现一个全方位的无限随机地图
477 0
|
数据库 Python
Python中Django框架使用总结
Python中Django框架使用总结
236 0
|
8月前
|
图形学 索引
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)
197 0

热门文章

最新文章