首先,你必須找出你的Android設備是否確實可以註冊幾個觸摸。如果你有更新的設備,這應該不成問題。我會假設你的設備可以,如果不行 - 你很快就會發現。
讓我們從更新方法開始吧。
void Update() {
// Nothing at the moment
}
我們首先要做的就是註冊觸摸。我們可以通過放入一個foreach來檢查Input.touches中的觸摸。像這樣:
void Update() {
foreach (Touch touch in Input.touches) {
}
}
通過這樣做,我們總是檢查當前屏幕上有多少觸摸。我們現在可以做的是通過fingerId檢查,如果fingerId == 0,1,2 ...運行一些代碼。這裏是我們現在得到的:
void Update() {
foreach (Touch touch in Input.touches) {
if (touch.fingerId == 0) {
// Finger 1 is touching! (remember, we count from 0)
}
if (touch.fingerId == 1) {
// finger 2 is touching! Huzzah!
}
}
}
到目前爲止我們太棒了!我們現在想要做的是檢測我們想要的動作。在我們的例子中,我們想要點擊,對吧?這應該與TouchPhase開始完美結合,並且結束。還有TouchPhase.Moved,但我們現在不需要。
if (touch.fingerId == 0) {
if (Input.GetTouch(0).phase == TouchPhase.Began) {
Debug.Log("First finger entered!");
}
if (Input.GetTouch(0).phase == TouchPhase.Ended) {
Debug.Log("First finger left.");
}
}
在這裏,我們正在檢查的相應手指的階段。如果你現在運行它,你應該能夠在第一次觸摸進入時看到控制檯中的消息,並且離開屏幕。這可以通過幾個觸摸完成,所以這裏是'整個'腳本:
void Update() {
foreach (Touch touch in Input.touches) {
if (touch.fingerId == 0) {
if (Input.GetTouch(0).phase == TouchPhase.Began) {
Debug.Log("First finger entered!");
}
if (Input.GetTouch(0).phase == TouchPhase.Ended) {
Debug.Log("First finger left.");
}
}
if (touch.fingerId == 1) {
if (Input.GetTouch(1).phase == TouchPhase.Began) {
Debug.Log("Second finger entered!");
}
if (Input.GetTouch(1).phase == TouchPhase.Ended) {
Debug.Log("Second finger left.");
}
}
}
}
我希望這會幫助你。我自己對此很新,所以如果我們幸運的話 - 有更多經驗的人可以來幫忙。我相信這可以寫得更清潔。請記住,如果您構建它,則無法看到控制檯消息。如果還沒有,請查看Unity Remote。祝你好運! :)
只使用一個UI.Button – Fattie
@JoeBlow如何是UI.Button選擇性的「手指之間很短的時間初步接觸,最終退出電話'? –
UI.Button的存在是爲了確定手指最初觸摸和最後退出手機之間是否存在非常短的時間。 – Fattie