首页 > 解决方案 > 我的 If-Statement 运行时没有得到所需的输入?

问题描述

Touch touchForThrow;

void Update()
    {
        if (Input.touchCount > 0)
            touchForThrow = Input.GetTouch(1);

        if (touchForThrow.phase == TouchPhase.Began)
        {
            Debug.Log(Input.touchCount);
        }
    }

第二个 If 语句在没有触摸输入的情况下运行。touchForThrow.phase == TouchPhase.Began应该是不可能的,即使 Debug.Log 说识别了 0 次触摸,但它仍然运行该语句。

标签: c#unity3d

解决方案


您正在等待一次触摸,但正在尝试获得第二次触摸!请记住,c# 中的索引是从 0 开始的!

AlsoTouch是一个结构体,因此总是有一个默认值。即使你的第一个if不是真的,它已经有一个虚拟触摸值,Began默认情况下可能是相位。

它可能应该是

if (Input.touchCount > 0)
{
    touchForThrow = Input.GetTouch(0);

    if(touchForThrow.phase == TouchPhase.Began)
    {
        Debug.Log(Input.touchCount);
    }
 }

如果您想要第二次触摸,您可能应该首先检查是否至少有两次触摸

if(Input.touchCount > 1)

推荐阅读