上一篇文章说这时就会如何使用SteamVR 2.0的交互UGUI 。
很抱歉,仍然为解决,已经有了思路,验证中。不过看UGUI的源码好头大。
大概3、4个月之前,我就已经有这个问题了。不过没有方向。
最近半个月才找到方向,公司瞎忙没时间学。自己一个人看不下去,我太难了。
通过各种方式,我来找解决2.0 与UGUI 的交互方案。
不可取!按钮还凑合,滚动条、滚动视图没法交互。
且 UI加碰撞器后,每次创建ui,都要调整一边,甚至ui大小变换后,也要调整一次 ,绝对不是这样的做法。
以下插件统统不支持2.0以后的版本
很抱歉来自官方解释,不能用
插件使用低版本的SteamVR 用不了,坑了我了几百块(付费插件)阿西吧,不过给了很大方向。
同样使用了低版本的SteamVR 用不了,(偷偷评论一下)
为什么vr 无法交互ugui,
输入方式不同: 手柄,鼠标键盘。
检测方式不同:手柄射线检测,Camera.ScreenToViewportPoint(mousePosition)
网上搜索了一些 ugui的底层博客,学了下。
当我们创建任意一个UI元素时,unity都会自动创建一个 Canvs,与EventSystem 游戏对象
同时挂载了,UGUI的脚本。
Canvas
Canvas Scaler
GraphicRaycaster
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
时间:2020年6月1日10点13分
VR可以交互UI了,虽然代码不完善