1. 程式人生 > >unity一些鍵盤滑鼠特殊觸發事件總結

unity一些鍵盤滑鼠特殊觸發事件總結

 首先是滑鼠雙擊事件,這個只能用OnGUI的方法了,程式碼如下:

 void OnGUI()
    {
        Event e = Event.current;
        if (e.isMouse && (e.clickCount == 2))
        {
           
            Debug.Log("使用者雙擊了滑鼠");
        }
    }


接下來是點選滑鼠的左右中鍵的程式碼。

注意是點選中鍵而不是滾動

如下:

 void Update()
    {
        if (Input.GetButton("Fire1"))
        { //LeftMouse是在inputManager中設定的,左鍵值為mouse 0    
          //   PlayerMove();
            Debug.Log("使用者click滑鼠左鍵");
        }
        if (Input.GetButton("Fire3"))
        { //LeftMouse是在inputManager中設定的,左鍵值為mouse 0    
          //   PlayerMove();
            Debug.Log("使用者click滑鼠中鍵");
        }
        if (Input.GetButton("Fire2"))
        { //LeftMouse是在inputManager中設定的,左鍵值為mouse 0    
          //   PlayerMove();
            Debug.Log("使用者click滑鼠右鍵");
        }
    }

上述程式碼裡的Fire1等是unity預設的。

這個預設設定不止是針對滑鼠的,同時還說鍵盤,例如左shift ,左ctrl和alt等。這個可以開啟設定自己看到。

位置的路徑在unity選單的Edit--->project setting -->input裡。

如下圖:

下面說滑鼠滾輪的互動。

直接舉個例子來說,例如場景裡有個cube 。

要實現:滾輪滾動相機的的鏡頭來拉近和拉遠。

把以下指令碼繫結到cube上,然後把相機指定上去就OK。滾動的程式碼就在Update裡。

如下:

using UnityEngine;
using System.Collections;

public class followtarget : MonoBehaviour
{
    public GameObject Thirdcamera;

    float distance = 1;
  
    void Update()
    {
        distance -= Input.GetAxis("Mouse ScrollWheel");
        Thirdcamera.transform.position = this.transform.position - Vector3.forward * distance;
    }
}
然後就是鍵盤雙擊事件了,

這個官方似乎沒有給出方法,所以就自創了。

我規定的是按鍵盤A鍵兩次按鍵間隔不超過0.5秒。下面是程式碼:

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class followtarget : MonoBehaviour
{
    private float timer = 0;
    public enum Clickcount
    {
        firsttime,
        secondtime,
        zerotime
    }

    Clickcount First = Clickcount.zerotime;
    /// <summary>
    /// 鍵盤雙擊功能,兩次按鍵間隔時間必須小於0.5秒
    /// </summary>
    void Update()
    {
        timer -= Time.deltaTime;
        if (Input.GetKeyDown(KeyCode.A)&& First == Clickcount.zerotime)
        {
            timer = 0.5f;
            Debug.Log("第一次按下");
            First = Clickcount.firsttime;
           
        }
        if (Input.GetKeyUp(KeyCode.A) && First == Clickcount.firsttime)
        {
            Debug.Log("第一次擡起");
            First = Clickcount.secondtime;
            
        }
        if (timer < 0)
        {
            First = Clickcount.zerotime;
        }

        if (Input.GetKey(KeyCode.A) && First == Clickcount.secondtime&&timer>0f)
        {

            Debug.Log("只有雙擊出現");
            First = Clickcount.zerotime; 
        }
    }
}



相關推薦

unity一些鍵盤滑鼠特殊觸發事件總結

 首先是滑鼠雙擊事件,這個只能用OnGUI的方法了,程式碼如下: void OnGUI() { Event e = Event.current; if (e.

unity animator動畫播放是觸發事件

     public void onLiu()     {        //要觸發的事件程式碼      }     pu

Unity使用之預設體&滑鼠事件&剛體&碰撞和觸發事件

預設體:        預設體能夠使遊戲物件和資源重複使用,相同的遊戲物件可以使用同一個預設體來建立,對預設體進行修改後,所有遊戲物件都會相應改變。 遊戲物件預設體的建立:         在SampleScene中建立一個3D模型,命名player,然後在Asse

Qt事件總結(滑鼠鍵盤)

Qt 程式需要在main()函式建立一個QCoreApplication物件,然後呼叫它的exec()函式。這個函式就是開始 Qt 的事件迴圈。在執行 exec()函式之後,程式將進入事件迴圈來監聽應用程式的事件。當事件發生時,Qt 將建立一個事件物件。Qt 中所有事件類都

unity鍵盤滑鼠事件

void Update()    {        //識別鍵盤輸入        //鍵盤A鍵按住        //第一種方式 "a" 必須是小寫字母        if (Input.GetKey("a"))        {        }        //第二種

【OpenGL】-009 GLUT中處理鍵盤滑鼠事件

【OpenGL】-009 GLUT中處理鍵盤滑鼠事件   鍵盤和滑鼠是GUI程式獲取使用者輸入的重要方式,在windows程式中,通過WM_KEY_DOWN/WM_KEY_UP/WM_LBUTTONDOWN/WM_RBUTTONDOWN等訊息的響應,使用者可以方便的處理鍵盤滑鼠的輸入。在

MFC 建立鍵盤按鍵觸發事件

描述:在MFC中通過按鍵盤某些按鍵觸發一些事件  資源檢視—-Dialog—-指定介面—-類嚮導—-虛擬函式—-PreTranslateMessage  找到自動生成的方法,新增方式如下: BOOL CduiChengLianXingDlg::PreTranslat

Unity 中的滑鼠事件方法彙總(物體,UGUI)

本文將從遊戲物體(Gameobject),和UGUI,講解Unity—PC端開發中,滑鼠事件的常見功能實現 本文將幫你解決Unity中如下或者類似的事件響應問題: 遊戲物體篇 點選遊戲物體,物體消失; 滑鼠懸停在遊戲物體上,物體旋轉; 移入遊戲物體,遊戲物體變

js的改值觸發事件鍵盤彈起觸發事件個人感覺差不多

//$('#txt_marketId').on('input propertychange', function (e) { // var marketId = $('#txt_marketId').val(); // ViewModel.co

Unity點選模型觸發事件

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Scen

matplotlib鍵盤滑鼠事件(tcy)

鍵盤滑鼠事件:2018/10/24 https://matplotlib.org/users/event_handling.html?highlight=event%20inaxes --------------------------------------------------

C#鉤子類 幾乎捕獲鍵盤滑鼠所有事件

using System; using System.Text; using System.Runtime.InteropServices; using System.Reflection; using System.Windows.Forms; namespace Mou

Android自動化測試初探(四): 模擬鍵盤滑鼠事件(Socket+Instrumentation實現)

通過Socket + Instrumentation實現模擬鍵盤滑鼠事件主要通過以下三個部分組成:   *   Socket程式設計:實現PC和Emulator通訊,並進行迴圈監聽   *   Service服務:將Socket的監聽程式放在Service中,從而達到

cocos creator學習(七)觸控和鍵盤事件總結

1、處理事件在節點(cc.Node)中完成的。對於元件可以通過訪問節點this.node來註冊和監聽事件。監聽事件可以通過this.mode.on()函式來進行 this.node.on('mousedown',function(event){          conso

JAVA之鍵盤滑鼠監聽事件

本案設計鍵盤按鈕,畫出一個簡易鍵盤, 通過按下,釋放鍵盤 滑鼠經過按鈕,滑鼠點選按鈕,滑鼠離開按鈕 詳細解釋了滑鼠鍵盤對應事件 先看一下鍵盤監聽介面的API void keyPressed(KeyEvent e) 按下鍵時呼叫。 void k

遮蔽右鍵,點選滑鼠觸發事件,置頂

<span style="font-family:KaiTi_GB2312;font-size:18px;">// 遮蔽瀏覽器自帶的右鍵 document.oncontextmenu = function(){ return false; } /

javascript的奇怪的問題,滑鼠點選偶數次觸發事件,單數次不觸發事件

編寫前臺頁面的javascipt程式碼時遇到的奇怪問題,排查了幾個小時,一開始抓不到頭緒,後來跟蹤javascipt程式碼時,發現該事件被累計觸發了,所以一次靈光、一次不靈光,仔細研究程式碼,發現,每次處理過程中,javascript程式都會在它的父節點註冊一回該事件,雖然

Extjs滑鼠長按事件(實現長按按鈕觸發事件的方法:mousedown、mouseup)

實現效果: 注:實現的效果其實就是監聽滑鼠長按的事件,當滑鼠左擊長按改變按鈕的樣式,當滑鼠放開之後還原按鈕的樣式。 實現方法: extjs: Ext.

Android自動化測試初探(五): 再述模擬鍵盤滑鼠事件(adb shell 實現)

上一篇博文中講述了通過Socket程式設計從外部向Emulator傳送鍵盤滑鼠模擬事件,貌似實現細節有點複雜。其實Android還有一種更簡單的模擬鍵盤滑鼠事件的方法,那就是通過使用adb shell 命令。 1.傳送鍵盤事件: 命令格式1:adb shell inp

常用JS鍵盤滑鼠事件

Keyboard 事件 屬性 值 描述 script 在使用者按下按鍵時觸發。 script 在使用者敲擊按鈕時觸發。 script 當用戶釋放按鍵時觸發。 Mous