unity3d檢測鼠標滑動停止事件

前幾天項目中需要一個檢測鼠標滑動停止的事件,發現Unity中沒有,只有拖動停止等事件,所以在這裏上傳一個,如果有問題希望大神能指教一下。

  private Action onScrollFinish;

    private bool isScroll = false;

    private bool isStartCoroutine = false;

	// Use this for initialization
	void Start () {
        onScrollFinish += () => { Debug.Log("滾動結束"); };
    }
	
	// Update is called once per frame
	void Update () {    
        if (Input.GetAxis("Mouse ScrollWheel") != 0f)
        {
            isScroll = true;
            if (isStartCoroutine==false)
            {
                StartCoroutine("checkScroll");
                isStartCoroutine = true;
            }
        }
	}

    IEnumerator checkScroll()
    {
        while (true)
        {
            if (isScroll)
            {
                isScroll = false;
            }
            else
            {
                if (onScrollFinish != null)
                {
                    onScrollFinish(); 
                }
                StopCoroutine("checkScroll");
                isStartCoroutine = false;
                isScroll = false;
            }

            yield return new WaitForSeconds(0.2f);
        }
    }

可以在start中註冊你的滾動結束事件出發時想要調用的方法。
這個方法是在update中實時監測滾輪是否滑動,當Input.GetAxis("Mouse ScrollWheel") != 0時表示鼠標正在滑動, 等待0.2秒是爲了延遲一下等待鼠標停止時update
檢測。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章