SteamVR2.0 UGUI交互问题 三

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

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

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

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

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

UI加碰撞器❓ 

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

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

VRTK ❓

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

商店其他的插件

插件使用低版本的SteamVR 用不了,白嫖了几百块(付费插件),不过给了很大方向。

 

VIVE Input Utility

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

分析问题:

为什么vr 无法交互ugui,

输入方式不同:  手柄,鼠标键盘。

检测方式不同:手柄射线检测,Camera.ScreenToViewportPoint(mousePosition)

网上搜索了一些 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 底层的知识

链接

https://github.com/ExtendRealityLtd/VRTK.Documentation

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

https://www.jianshu.com/p/b21278807514

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

发布了57 篇原创文章 · 获赞 37 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_35030499/article/details/93015731