【发布时间】:2019-03-27 13:08:27
【问题描述】:
我有一个游戏,你是一个玩家方块,你必须在其他方块经过你时躲避它们。由于我调用了一个名为 GameController 的脚本,敌人的立方体应该会生成。但立方体没有产卵。请帮忙。 (而且每当我的立方体被破坏时,游戏结束并且重新启动功能不起作用)
我尝试重新创建预制件和代码,但什么也没发生。此外,我的其他游戏中也可以使用相同的代码 这是我的代码:
void Start()
{
gameOver = false;
restart = false;
restartText.text = "";
gameOverText.text = "";
score = 0;
UpdateScore();
StartCoroutine(SpawnWaves());
}
void Update()
{
if (restart)
{
if (Input.GetKeyDown(KeyCode.R))
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
}
IEnumerator SpawnWaves()
{
yield return new WaitForSeconds(startWait);
while (true)
{
for (int i = 0; i < hazardCount; i++)
{
GameObject hazard = hazards[Random.Range(0, hazards.Length)];
Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z);
Quaternion spawnRotation = Quaternion.identity;
GameObject newSpawn = Instantiate(hazard, spawnPosition, spawnRotation) as GameObject;
yield return new WaitForSeconds(spawnWait);
}
yield return new WaitForSeconds(waveWait);
if (gameOver)
{
restartText.text = "Press 'R' for Restart";
restart = true;
break;
}
}
}
public void AddScore(int newScoreValue)
{
score += newScoreValue;
UpdateScore();
}
void UpdateScore()
{
scoreText.text = "Score: " + score;
}
public void GameOver()
{
gameOverText.text = "Game Over!";
gameOver = true;
}
}
我希望敌人会生成,但他们没有
【问题讨论】:
-
hazardCount的值是多少,您从哪里调用GameOver? -
那么startWait、waveWait和spawWait的值是多少?
-
当您添加调试消息时,您的代码会到达哪里?
-
我认为应该是
yield break而不是break -
@Dave,这不会有任何区别。 break 用于退出无限的 while 循环。协程将在循环退出后结束。