Unity Touch阶段返回不正确的结果

时间:2014-04-07 13:48:18

标签: unity3d touch

Unity中,我正在尝试使用Touch

我遇到了不间断的问题,并且决定尝试先让一些简单的工作。

每当我按下屏幕时,我都希望Touch.phase每次都返回TouchPhase.Began。但是,有时第一次触摸屏幕时会返回TouchPhase.Stationary。我还注意到,当触摸离开屏幕时,它有时不会调用TouchPhase.EndedTouchPhase.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;
        }
    }
}

1 个答案:

答案 0 :(得分:5)

Touch.phase每帧都会更新,因此您必须在Update()方法中进行检查。

FixedUpdate()仅在每个x帧(固定帧速率)中调用,这就是您缺少某些触摸阶段的原因。