首先,你必须找出你的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