Unity 光标控制进度条Slider

来源:互联网 发布:安卓开发艺术探索源码 编辑:程序博客网 时间:2024/05/16 14:57

现在做的VR项目有这个功能,就是通过凝视来控制滑动条,但是用的是Google VR  SDK ,这是不支持点击的,

只能通过凝视时长判断点击,当时看到这个需求真心没思路,后来突然脑袋灵光了,

有同样的需求的可以看看,如果有更好的方法可以一起分享一下 微笑

using UnityEngine;using System.Collections;using UnityEngine.UI;public class Controller : MonoBehaviour {    public Slider slider;    public RectTransform sliderT;    public Canvas canvas;    private float _refreshRule = 0.02f;   //这是用来纠正,防止鼠标有微弱抖动也会导致刷新(显然这对凝视是有交互障碍的,所以设置缓冲)    private bool _enter = false;    void Start()    {        EventTriggerListener.Get(slider.gameObject).onEnter = this.__onEnter;        EventTriggerListener.Get(slider.gameObject).onExit = this.__onExit;    }    void Update()    {        if (_enter)            set();    }    private void set()    {        //输出鼠标的UI位置        Vector2 _pos = Vector2.one;        RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,                    Input.mousePosition, canvas.worldCamera, out _pos);        //这里算出鼠标相对slider的位置比例        float v = (_pos.x - slider.transform.localPosition.x + sliderT.sizeDelta.x / 2) / sliderT.sizeDelta.x;        v = Mathf.Clamp01(v);        //交互缓冲        if (Mathf.Abs(v - slider.value) > _refreshRule)            slider.value = v;    }    private void __onEnter(GameObject go)    {        _enter = true;    }    private void __onExit(GameObject go)    {        _enter = false;    }}


下面附上Demo, 不过代码上面都有了,点击下载


0 0
原创粉丝点击