Unity 光标控制进度条Slider

现在做的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
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值