【发布时间】:2017-04-20 05:58:03
【问题描述】:
void Spawnwave()
{
//Standard unit is lvl1 unit
int saverUnit = 1;
int saverPossibilty = 100;
System.Random randy = new System.Random();
//This for gets the possibility for the first possible enemy
for (int i = 0; i < possibilty.Length; i++)
{
if (possibilty[i] != 0)
{
saverUnit = i;
saverPossibilty = possibilty[i];
break;
}
}
//As only 2 kind of units per wave can be spawned +1 spawns the "stronger" one
for (int i = 0; i < level+5; i++)
{
if (randy.Next(100) > saverPossibilty)
{
StartCoroutine(SpawnUnit(saverUnit + 1));
}
else
{
StartCoroutine(SpawnUnit(saverUnit));
}
}
}
IEnumerator SpawnUnit(int unit)
{
Instantiate(enemies[unit],spawnPoint.position, spawnPoint.rotation);
yield return new WaitForSeconds(timeBetweenEnemies);
}
所以我正在尝试制作 Unity 塔防游戏。这两种方法应该以 0.5 秒的间隔生成 5+ 等级敌人的值。我调试了它,它运行了代码,但我没有得到任何新的游戏对象。
我试图在例如:Youtube (brackeys) 和他的塔防教程上寻找解决方案,但我仍然找不到我的错误。
感谢您的帮助, 米卡。
【问题讨论】:
-
您永远不需要在 Unity 中调用
System.Random,而是使用内置的UntityEngine.Random。 -
我看不出这段代码有什么问题。
System.Random很好。 -
您是否查看了游戏运行对象的层次结构?可能只是在与您预期的位置不同的位置生成。
-
正如@CNuts 所说,您的游戏对象可能位于另一个坐标中,创建它们后,尝试将新游戏对象的位置设置在您知道相机可以看到它们的位置。
-
我也没有看到
System.Random的问题:System.Random让您指定一个种子值,而UnityEngine.Random没有。 i> 指定种子值有时非常重要!