【发布时间】:2015-08-10 05:51:22
【问题描述】:
上下文
我正在制作一款要求玩家按指定顺序触摸对象的手机游戏。正确的顺序在名为 clickOrder 的列表中确定。要确定玩家应该点击的当前对象,使用 currClickIndex。
问题
当触摸一个正确的对象时,调试文本会在瞬间显示“正确”,然后立即变为“错误”。我不确定的是为什么 if 和 else 块都在只接触一个对象时执行。
代码
void Update()
{
if (Input.touchCount == 1)
{
if (this.enabled)
{
Vector2 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(worldPoint, Vector2.zero);
if (hit != null && hit.collider != null)
{
// check if the touched object is the correct one
if (hit.collider.gameObject == clickOrder[MyData.currClickIndex])
{
debug.text = "Correct";
MyData.currClickIndex++;
}
else
{
debug.text = "Wrong";
}
}
}
}
}
【问题讨论】:
-
你查看过日志历史吗?它应该在它之后立即显示“正确”和“错误”。如果是这样的话,你能想出一种可能发生的方式吗?如果这就是你的情况发生的方式吗?提示:每秒会调用很多次更新。
-
奇怪的是,只要触摸到对象,就会显示“正确”。但是,只要对象仍被触摸,这将立即转变为连续的多个“错误”实例。
-
MyData.currClickIndex++;告诉你什么?
-
还有一点:
if (this.enabled)是多余的。如果 MonoBehaviour 被禁用,则永远不会调用Update()。if (this.enabled)在你的情况下永远不会失败。
标签: unity3d