[Unity3D]判斷滑鼠擡起和新增相應事件
阿新 • • 發佈:2019-02-01
這裡我說自己的方法,拋磚引玉
在遊戲中,常常要寫滑鼠按下擡起的判斷,這裡我用三個變數來判斷。
當滑鼠第一次按下時,firstMouseDown和mouseDown都變為true,而firstMouseUp為false。緊接著如果滑鼠擡起,那麼mouseDown變為false,而firstMouseUp變為ture,我們只要觀察firstMouseUp這個變數,就知道滑鼠有沒有擡起。
這裡在最外面要設定firstMouseDown 為false,用來清空一下之間操作存下來的資訊。onDrawLine()方法是一個自己寫的方法
void Update()
{
if (Input.GetMouseButtonDown(0))
{
firstMouseDown = true;
mouseDown = true;
firstMouseUp = false;
}
if (Input.GetMouseButtonUp(0))
{
mouseDown = false;
firstMouseUp = true;
}
onDrawLine();
firstMouseDown = false ;
}
下面是操作
private void onDrawLine()
{
if (firstMouseDown)
{
//這裡清空之前的操作
}
if (mouseDown)
{
//這裡寫滑鼠拖動時候的操作
}
else
{
if (firstMouseUp)
{
//這裡寫滑鼠擡起的操作,同時要設定firstMouseUp和isCancelCardShow
firstMouseUp = false;
isCancelCardShow = false;
}
}
}
在Unity中測試一下,發現拖動和擡起時沒有問題的
以上是我的程式碼
另外那天看到有人問,怎麼判斷在手機上的按下和拖動,我想了一下
第一次按下時,記錄按下的位置和時間,擡起時,記錄擡起的位置和時間,然後位置和時間相減
1.時間和位置比較小的是按下
2.時間比較長視為拖動(因為有可能是劃了一圈回到了原點,又或者一直按著不動,但是這兩個應該都會觸發拖動事件)