c# - 我的 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# 中的索引是从 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)
推荐阅读
- swift - 如何使用调度队列创建多个延迟?
- python - 使用 Flask Python 创建垃圾邮件过滤器的问题
- ruby-on-rails - 外键违规:我需要删除用户但保存属于该用户的数据
- python - keras语义分割中如何获取单类的iou?
- python - 并行 Python for 循环迭代函数参数列表
- asp.net-core - HttpClientHandler 设计与测试冲突
- php - 在php中将文件从一台服务器复制到另一台服务器
- python - socket.gaierror: [Errno 11001] getaddrinfo 连接到 URL python 时失败
- python - Matplotlib:使对象被轴自动缩放忽略
- flutter - 来自 jsonapi 的颤振下拉菜单