Zuerst müssen Sie herausfinden, ob Ihr Android-Gerät in der Tat mehrere Berührungen registrieren kann. Wenn Sie ein neueres Gerät haben, sollte dies kein Problem sein. Ich gehe davon aus, dass Ihr Gerät kann, und wenn es nicht möglich ist - Sie werden es bald genug herausfinden.
Beginnen wir mit der Update-Methode.
void Update() {
// Nothing at the moment
}
Was möchten wir zuerst tun Berührungen registrieren. Wir können dies tun, indem wir eine foreach nach innen setzen und nach Berührungen in Input.touches suchen. Wie folgt:
void Update() {
foreach (Touch touch in Input.touches) {
}
}
Dadurch überprüfen wir immer, wie viele Berührungen sich derzeit auf dem Bildschirm befinden. Was wir jetzt tun können, ist mit fingerId zu überprüfen, und wenn fingerId == 0, 1, 2 ... Code ausführen. Hier ist, was wir jetzt haben:
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!
}
}
}
Wir sind so weit! Was wir jetzt tun wollen, ist die Bewegung, die wir wollen. In unserem Fall wollten wir Wasserhähne, oder? Das sollte perfekt mit TouchPhase Begann und Ended funktionieren. Es gibt auch TouchPhase.Moved, aber das brauchen wir jetzt nicht.
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.");
}
}
Hier überprüfen wir die Phase des entsprechenden Fingers.Wenn Sie das jetzt ausführen, sollten Sie in der Lage sein, die Nachrichten in der Konsole zu sehen, wann immer Ihre erste Berührung eintritt, sowie den Bildschirm zu verlassen. Dies kann mit mehreren Berührungen getan werden, also hier ist das "ganze" Skript:
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.");
}
}
}
}
Ich hoffe, dass dies Ihnen helfen wird. Ich bin selbst ziemlich neu in diesem Bereich, wenn wir also Glück haben, kann jemand mit mehr Erfahrung kommen und helfen. Ich bin zuversichtlich, dass dies viel sauberer geschrieben werden könnte. Denken Sie daran, dass Sie die Konsolenmeldungen nicht sehen können, wenn Sie sie erstellen. Schauen Sie sich Unity Remote an, wenn Sie es noch nicht getan haben. Viel Glück! :)
nur verwenden UI.Button – Fattie
@JoeBlow Wie ist ein UI.Button selektiv zu ‚einem sehr kurzen Zeitraum zwischen dem Finger zunächst berühren und schließlich das Telefon verlassen '? –
UI.Button gibt an, ob zwischen dem ersten und dem letzten Berühren des Telefons ein sehr kurzer Zeitraum war. – Fattie