LEAPMotion猎户座(VR)开发~003~UI


LEAPMotion猎户座(VR)开发~003~UI

Created by miccall (转载请注明出处 miccall.tech)
  • 先来看看UI的效果

  • demo下载的话 leap官网就有 本篇文章讲讲构建和简单的使用

这里写图片描述

UI 的添加

  • 从官网下载下来的UI Input 的包 导入

  • VR场景拖入 LMHeadMountedRig 预制体

  • 在导入的UI包中 ,找到LeapMotionModules \ UIInput 预制文件夹下 ,把“LeapEventSystem”组合式拖入场景 。

  • 自己创建一个Canvas(右击 -> UI -> canvas) 并在其下添加 UI 元素(ui元素当然也在LeapMotionModules \ UIInput 预制文件夹下)
    重要的一点 : canvas的属性 : Render Mode 设置为 : world space
    然后把自己加入ui组件 ,进行排版 (可以是默认的UGUI 也可以是UI组件里面带的UI元素)

  • 调整canvas 的边界 到恰好合适 (width 和 Height 属性)

  • 调整canvas 的 scale 到合适

  • 调整位置到合适的地方 (LMHeadMountedRig 里面的摄像机可以看到的位置 )

差不多就这样了 还有几点要提醒的

  • 标准系统 的 GUI 元素 可以添加父画布上 。

  • Leap UI 输入 模块 也可以用到 的uGUI的 系统。

  • 特殊的leap UI元素, 可以在预制的文件夹中找到

  • 这些预制也兼容鼠标交互



UI组件里面提供的UI元素 :

这里写图片描述

分别是 :

  • 一般的button
  • 只能用于物理的button (不能鼠标点击 )
  • 滑动的布局
  • 滑动条
  • 单选开关

Button

这里写图片描述

最里层Text 显示了button的按钮文字
外面一层是button 的 Image
最外面一层便是最主要的一层了

这里写图片描述

Compressible UI 在模块中这是一个小助手工具,允许UI元素扩展和压缩与画布的表面——响应联系和互动。 它也可以控制阴影的不透明度。 这是一个强大的工具向你的UI元素增加了活力。

这里写图片描述

 unityc#   Event Trigger : <Component>

这里写图片描述

它默认挂了两个事件 播放按键声音
还有 CompressibleUI 脚本
按下执行 Rereact() 弹起执行 Expand()

响应的事件

该UI在创立的时候 ,给我们加入了
PointerDown 和 PoninterUp 两个事件
官方给的事件信息 我们也可以用接口的形式获取对应的事件

回调方法 解释
OnBeginDrag 在开始拖动之前调用。
OnCancel 当发生取消事件时由EventSystem调用。
OnDeselect 当选择一个新对象时由EventSystem调用。
OnDrag 每次在拖动期间移动指针时由EventSystem调用。
OnDrop 当对象接受删除时由EventSystem调用。
OnEndDrag 一旦拖动结束,由EventSystem调用。
OnInitializePotentialDrag 当发现拖动时,但在有效开始拖动之前由EventSystem调用。
OnMove 当Move事件发生时由EventSystem调用。
OnPointerClick 发生Click事件时由EventSystem调用。
OnPointerDown 当发生PointerDown事件时由EventSystem调用。
OnPointerEnter 当指针输入与此EventTrigger关联的对象时由EventSystem调用。
OnPointerExit 当指针退出与此EventTrigger关联的对象时由EventSystem调用。
OnPointerUp 当发生PointerUp事件时由EventSystem调用。
OnScroll 当发生Scroll事件时由EventSystem调用。
OnSelect 当Select事件发生时由EventSystem调用。
OnSubmit 当发生Submit事件时由EventSystem调用。
OnUpdateSelected 与此EventTrigger关联的对象更新时由EventSystem调用。

Toggle

  • toggle 和Button很像 这里就讲不同的点 :
  • 它比button多过了一个脚本
    1. C# : ToggleToggler 脚本很简单 当触发系统的 Toogle 的 OnvalueChange时 做一些改变 ,例如 更改文字 更改颜色 。
    2. 多调用 CompressibleUI的一个 DivideLayerHeightsOnToggle(); 方法
      BUG : 当设置了默认状态为is on 时 。初始化的状态没有发生改变 。 单次点击不变 。

Slider

  • 找个组件比其他的复杂一些
  • 层次 :

        1.  Hnadle Slide Area :
             导航的滑块 是一个Canvas  他的Child 同样是一个 Canvas 里面包含一个Image (滑块) 
        2.  Fill   Area   :             
            滑动的填充Canvas  由一个Image和一个 Mask 组成他的child 由Fill 和 HnadleShow 组成  Fill完成大部分的填充任务 而HnadleShadow 细节化了阴影效果 包括它上面挂载一个Slider Shadow 脚本 。用来实时更新位置变化和阴影效果 。
        3.  Background : 不用说就是背景而已 
    
  • 功能部分 :

        1. Slider <Component> 调用OnvalueChange时 ,  调用挂载自身的SliderVolume脚本
                                              setSliderSoundVolume();方法  来更新滑块的值 。 
        2. Event Trigger 
                                             --  BeginDrag           开始拖拽  
                                             --  PointerDown       点击
                                             --  Pointer Up           抬起  
    
  • 除了BeginDrag方法 播放声音 ,其余的执行都和其他一样

Script c# for unity

Interface
这里写图片描述

1. Using  引入
2. 实现对应的接口   实现接口的方法 。

这里写图片描述