SteamVR2.0---UGUI交互(二)

上一篇文章说这时就会如何使用SteamVR 2.0的交互UGUI 。

很抱歉,仍然为解决,已经有了思路,验证中。不过看UGUI的源码好头大。

大概3、4个月之前,我就已经有这个问题了。不过没有方向。

最近半个月才找到方向,公司瞎忙没时间学。自己一个人看不下去,我太难了。

通过各种方式,我来找解决2.0  与UGUI 的交互方案。

UI加碰撞器❓ 

做法新建一个3D的UI按钮,给他加上Collider

手柄上加上Collider ,UI 或手柄,随便选择一个加上Rigibody,勾选IsTrigger,真恶心。

如:

代码这样写:

碰撞中检测扳机按下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Valve.VR;
using Valve.VR.InteractionSystem;

public class DunPaiLeftPanel : MonoBehaviour
{

    public SteamVR_Action_Boolean trriger;

    public Button btn;

    void Start()
    {
        btn.onClick.AddListener(OnButtonClick);
    }

    public void OnTriggerStay(Collider other)
    {
        if (trriger.GetStateDown(SteamVR_Input_Sources.RightHand))
        {
            btn.onClick.Invoke();
        }
    }

    public void OnButtonClick()
    {
        //按钮点击做什么
    }

}

不可取!按钮还凑合,滚动条、滚动视图没法交互。

且 UI加碰撞器后,每次创建ui,都要调整大小,甚至ui大小变换后,也要调整一次 ,绝对不是这样的做法。

以下插件统统不支持2.0以后的版本

VRTK ❓

很抱歉来自官方解释,不能用

商店其他的插件

插件使用低版本的SteamVR 用不了,坑了我了几百块(付费插件)阿西吧,不过给了很大方向。

VIVE Input Utility

同样使用了低版本的SteamVR 用不了,(偷偷评论一下)

分析问题:

为什么vr 无法交互ugui,

输入方式不同: 

VR:手柄

PC:鼠标键盘。

检测方式不同:

VR:手柄射线或碰撞检测

PC:鼠标位置

网上搜索了一些 ugui的底层博客,学了下。

当我们创建任意一个UI元素时,unity都会自动创建一个 Canvs,与EventSystem 游戏对象

同时挂载了,UGUI的脚本。

Canvas 对象   

Canvas  

Canvas Scaler 

GraphicRaycaster

EventSystem 对象

EventSytem 

StandaloneInputModule

BaseInput(这个需要运行时才会被挂载)   

每一个都有其各自的作用。

简易介绍。

EventSystem 更新输入、射线检测模块。

GraphicRaycast  检测图形,是否在ui元素上。

StandaloneInputModule   PC、安卓、输入设备管理   分发接口事件IPointerEnterHandler等。

其实还有一个 TouchInputModule ,用来管理安卓的输入。  不过现在已经被整合到一起了。

上边介绍了很多。

既然UGUI的功能了解。 VR 交互与PC交互有不同、共同点。修改源代码就可以。

通过阅读商店找的插件以及UGUI内核源码。

Unity在做UGUI时,已经为开发者预留了接口 类,用来拓展自己的功能。

继承射线检测、输入检测自定义就可以。

BaseInput也得改。

继续挖坑,下篇文章介绍UGUI 底层的知识

链接

GitHub - ExtendRealityLtd/Academy: Educational guides and tutorials to accelerate learning.

VR GUI Input Module for Unity (HTC Vive) - wacki http://wacki.me/blog/2016/06/vr-gui-input-module-for-unity-htc-vive/

下载最新的VRTK和SteamVR插件,出现“SteamVR(not installed)” - 简书

wacki/Unity-VRInputModule https://github.com/wacki/Unity-VRInputModule

已经可以交互了UI了

时间:2020年6月1日10点13分

VR可以交互UI了,虽然代码不完善

视频效果地址:VRUI交互_哔哩哔哩_bilibili

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值