以前我在用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; } } }
長代碼未必是好味道,要遵循單一職責,一個代碼完成一項功能。