Unity软件灵活控制鼠标的隐藏与消失

  以前我在用unity发布PC端软件的时候,对于鼠标的显示与隐藏的从来没关注过,后来有一次到现场安装程序发现鼠标一直停留在在界面上就很影响展示效果(楼主是做展厅软件的),于是就想到写一个小脚本来单独控制鼠标的隐藏与显示。

  在unity中我们可以利用代码Cursor.visible=true或false来控制鼠标的显示与隐藏。我刚开始想的比较简单就是利用这段代码,我按一个按键鼠标显示,再按一个按键鼠标隐藏,这样确实能达到控制鼠标的显示与 隐藏,但是从用户的角度想,这也太傻了吧,每次都得去按来按去的,设计不合理。应该是我程序来动态判断鼠标是否隐藏消失,当有人操作时鼠标显示,当无人操作 时过一段时间鼠标就自动消失,这样才是合理的。但怎么判断是否有人操作呢,可以根据鼠标的位置来判断是否有人操作,当鼠标位置长时间没有判断时则可以判断无人操作,问题已经分析清楚了可以上代码了

   

using UnityEngine;
using System.Collections;

public class MouseHideControl : MonoBehaviour {

    private Vector3 OldMousePos = new Vector3(0, 0, 0);
    private bool MouseMove = false;
    private float MouseHideTime = -1;
    public float MouseHideTimer = 5;
    // Use this for initialization
    void Start () {
        InvokeRepeating("SearchMouseState", 1f, 0.3f);
    }
    
    // Update is called once per frame
    void Update () {
        if (!MouseMove && MouseHideTime >= 0)
        {
            MouseHideTime += Time.deltaTime;
            if (MouseHideTime >= MouseHideTimer)
            {
                Cursor.visible = false;
                MouseHideTime = -1;
            }
        }
    }

    void SearchMouseState()
    {
        if (Input.mousePosition != OldMousePos)
        {
            OldMousePos = Input.mousePosition;
            Cursor.visible = true;
            MouseMove = true;
            MouseHideTime = 0;
        }
        else
        {
            MouseMove = false;
        }
    }
}

        长代码未必是好味道,要遵循单一职责,一个代码完成一项功能。

posted @ 2019-12-19 16:05  低调的风仔  阅读(2014)  评论(0编辑  收藏  举报