【发布时间】:2014-08-23 20:44:37
【问题描述】:
首先,这是我的脚本:
#pragma strict
var incorrect: AudioClip;
var correct: AudioClip;
var anything: GameObject;
var diamond: Sprite;
var circle: Sprite;
var triangle: Sprite;
var square: Sprite;
var number: int;
var AcceptInput: boolean = true;
static
var score: int = 1;
var guiScore: GUIText;
function Start() {
number = Random.Range(1, 4);
if (number == 1) {
anything.GetComponent(SpriteRenderer).sprite = diamond;
} else if (number == 2) {
anything.GetComponent(SpriteRenderer).sprite = circle;
} else if (number == 3) {
anything.GetComponent(SpriteRenderer).sprite = triangle;
} else {
anything.GetComponent(SpriteRenderer).sprite = square;
}
}
function Update() {
if (Input.GetMouseButtonDown(0)) {
if (AcceptInput) {
AcceptInput = false;
Debug.Log("Clicked");
if (anything.GetComponent(SpriteRenderer).sprite == diamond) {
audio.PlayOneShot(correct);
guiScore.text = "Score: " + score;
StartCoroutine("YieldTestEnumerator");
AcceptInput = true;
number = Random.Range(1, 4);
if (number == 1) {
anything.GetComponent(SpriteRenderer).sprite = diamond;
} else if (number == 2) {
anything.GetComponent(SpriteRenderer).sprite = circle;
} else if (number == 3) {
anything.GetComponent(SpriteRenderer).sprite = triangle;
} else {
anything.GetComponent(SpriteRenderer).sprite = square;
}
} else if (anything.GetComponent(SpriteRenderer).sprite == circle) {
Debug.Log("Wrong Answer!");
Application.LoadLevel("GameOver");
audio.PlayOneShot(incorrect);
} else if (anything.GetComponent(SpriteRenderer).sprite == triangle) {
Debug.Log("Wrong Answer!");
Application.LoadLevel("GameOver");
audio.PlayOneShot(incorrect);
} else if (anything.GetComponent(SpriteRenderer).sprite == square) {
Debug.Log("Wrong Answer!");
Application.LoadLevel("GameOver");
audio.PlayOneShot(incorrect);
}
}
}
}
function YieldTestEnumerator() {
yield WaitForSeconds(0.5);
}
如您所见,这是一个多项选择游戏。由于一些愚蠢和奇怪的原因,如果我在屏幕上按 ANYWHERE,它只会加载“GameOver”场景,即使我得到了正确的答案。为什么它会检测到屏幕上任何地方的触摸?真是太奇怪了。你们有任何想法如何解决这个问题吗?我不明白这个。任何帮助将不胜感激。
【问题讨论】:
-
请通过在适当位置缩进(倍数)4 个空格来修正缩进。现在你的代码几乎无法阅读。
-
这样更好吗? @巴特
-
不是真的,但我想我修好了。看看差异并确保它仍然正确。第一个是免费的。 ;)
-
所以我假设您只希望在单击特定项目时发生该操作?我在您的代码中看不到任何内容,您可以检查是否是这种情况。您现在只是响应点击,不再过滤。
-
所以我要做的是当你按下按钮时,检查另一个对象的精灵是否是菱形。如果是则加1分。然后再次更改精灵。如果不是,则加载场景游戏结束,现在,出于某种奇怪的原因,我按下屏幕上的任意位置,将我带到游戏结束场景@Bart
标签: unity3d unityscript