Each Touch前面的幾個功能用unity自身的UI事件比較容易實現,可是其最強的地方在於封裝了移動端第一人稱遊戲的操做,如下是幾個關鍵功能:react
(一)Joystick測試
右鍵->選擇Easytouch controls->選擇Joystick便可添加以下圖所示。spa
1)joystick name3d
此名字與遊戲名字相同,可是遊戲物體名字沒法從新命名,只能在此處修更名字,joystick name後邊的幾個參數相對來講沒用歧義。code
2)position&sizeorm
此部分是用來設定位置和大小,type若是選爲dynamic則一開始按鈕是隱藏的,會動態在點擊位置出現。第二個參數錨點若是不選擇用戶自定義,則不能在recttransform中設定,只能在joystick中設定。blog
3)axes properties遊戲
此部分是設定重點,Turn & move direction action若是選中則表示能夠旋轉,做用遊戲物體爲Direct action to參數所指定的遊戲物體,也能夠點擊auto link on tag,經過指定layer來肯定做用的遊戲物體。Turn & move direction action會影響下邊Horizontal axis以及vertical axis子參數。取消勾選,然受設定Horizontal axis以及vertical axis子參數(重點)。事件
Horizontal axis(vertical axis):這些參數用來設定相關操做對遊戲物的影響,後續的事件(參數moveevent等)綁定功能可實現相似功能(即在綁定的事件中手動編寫控制代碼)。此處至關於經過參數定義能夠快速實現功能。其後邊名稱能夠修改,並經過此名字來獲取水平方向的參數(與 Input.GetAxis("Horizontal")功能相似);ETCInput.GetAxisDownRight("Horizontal")則表示獲取名稱爲Horizontal的Horizontal axis值(因爲能夠有不一樣的joystick,因此會有不一樣的Horizontal axis,經過名稱來區分是哪一個)get
General setting:主要是react on參數和speed參數,前者爲用來肯定按下觸發(觸發一次)仍是按下後一直觸發(持續觸發),後者肯定運動的速度。
Direction action:表示相關運動控制,Direct action to參數所指定的遊戲物體,也能夠點擊auto link on tag,經過指定layer來肯定做用的遊戲物體。action則表示運動形式(旋轉仍是已移動仍是跳躍。。),affected axis則表示運動軸,而有的是沒有此選項的,好比action參數值爲jump。
Gravity-inertia-smoothing:進行相關慣性設定,即鬆開按鍵後是否當即中止運動仍是會慣性一段時間。
Unity axis:與unity對應的input類中的軸是否對應(如vertical,horizontal等),axes properties的第一選項Enable unity axis若是不勾選,則此選項則沒有做用。
4)camera
Enable tracking:是否開啓追蹤,便是否有運動物體視角(攝像機是否追蹤遊戲物體)。因此須要設定追蹤的攝像機和相應的遊戲物體
5)sprites
按鍵的貼圖
6)MoveEvent~PressEvent
相關事件,跟button操做方法同樣,因爲事件衆多也能夠採用ETCInput類來實現,代碼見文末。
(二)D-pad、TouchPad
右鍵->選擇Easytouch controls->選擇D-pad便可添加,其參數與Joystick基本相似,不作贅述。
TouchPad與Joystick功能也類似,不過是以觸摸板的形式表現。
(三) Button
右鍵->選擇Easytouch controls->選擇Button便可添加。其功能少於上述三類,其至關於unity Button功能的擴展,並可以經過Direction action參數(四種按鍵均有此參數,功能同樣)快速定義點擊時與運動相關的運動形式。並經過ETCInput.GetButtonValue( "Button"),獲取當前值(測試均爲1,不知道有什麼特殊意思)
Button代碼事件 if (ETCInput.GetButton("Button")){ getButtonText.text="YES"; getButtonTimeText.text = ETCInput.GetButtonValue( "Button").ToString(); } else{ getButtonText.text=""; getButtonTimeText.text = ""; } if (ETCInput.GetButtonDown("Button")) { getButtonDownText.text = "YES"; StartCoroutine( ClearText(getButtonDownText)); } if (ETCInput.GetButtonUp("Button")){ getButtonUpText.text = "YES"; StartCoroutine( ClearText(getButtonUpText)); }
代碼控制事件 ETCInput.GetAxis("Horizontal");//獲取水平軸返回值(與unity的Input.GetAxis相同); ETCInput.GetAxisSpeed("Horizontal");//獲取水平軸方向的移動速度; ETCInput.GetAxis("Vertical"); ETCInput.GetAxisSpeed("Vertical"); //按下與鬆開(只執行一次) if (ETCInput.GetAxisDownRight("Horizontal")){ downRightText.text = "YES"; StartCoroutine( ClearText(downRightText)); } if (ETCInput.GetAxisDownDown("Vertical")){ downDownText.text = "YES"; StartCoroutine( ClearText(downDownText)); } if (ETCInput.GetAxisDownLeft("Horizontal")){ downLeftText.text = "YES"; StartCoroutine( ClearText(downLeftText)); } if (ETCInput.GetAxisDownUp("Vertical")){ downUpText.text = "YES"; StartCoroutine( ClearText(downUpText)); } //持續按下與鬆開(持續執行) if (ETCInput.GetAxisPressedRight("Horizontal")){ rightText.text ="YES"; } else{ rightText.text =""; } if (ETCInput.GetAxisPressedDown("Vertical")){ downText.text ="YES"; } else{ downText.text =""; } if (ETCInput.GetAxisPressedLeft("Horizontal")){ leftText.text ="Yes"; } else{ leftText.text =""; } if (ETCInput.GetAxisPressedUp("Vertical")){ upText.text ="YES"; } else{ upText.text =""; }
Event註冊時間 public void MoveStart(){ } public void Move(Vector2 move){ } public void MoveSpeed(Vector2 move){ } public void MoveEnd(){ } public void TouchStart(){ } public void TouchUp(){ } public void DownRight(){ } public void DownDown(){ } public void DownLeft(){ } public void DownUp(){ } public void Right(){ } public void Down(){ } public void Left(){ } public void Up(){ }