在Unity中,我尝试使用Touch
。
我遇到了不间断的问题,因此决定先尝试先做一些简单的工作。
每当我按下屏幕时,我都希望Touch.phase
每次都返回TouchPhase.Began
。但是,初次触摸屏幕时,有时会返回TouchPhase.Stationary
。我还注意到,触摸离开屏幕时,有时有时不会调用TouchPhase.Ended
或TouchPhase.Canceled
。我究竟做错了什么?
这是我非常简单的代码:
void FixedUpdate() {
if(Input.touchCount == 1) {
Touch touch = Input.GetTouch(0);
switch(touch.phase) {
case TouchPhase.Began:
Debug.Log("Began: " + touch.figerId);
break;
case TouchPhase.Stationary:
Debug.Log("Stationary");
break;
case TouchPhase.Moved:
Debug.Log("Moved");
break;
case TouchPhase.Canceled:
Debug.Log("Canceled");
break;
case TouchPhase.Ended:
Debug.Log("Ended");
break;
default:
Debug.Log("Default");
break;
}
}
}
最佳答案
Touch.phase
每帧更新一次,因此您必须在Update()
方法中进行检查。FixedUpdate()
仅在每x
帧(固定帧速率)中被调用,这就是您缺少某些触摸阶段的原因。