【问题标题】:Can't spawn gameobjects in Unity无法在 Unity 中生成游戏对象
【发布时间】: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> 指定种子值有时非常重要!

标签: c# unity3d unity5


【解决方案1】:

您还应该按照@ScottChamberlain 的建议如下调用随机生成,10 是任意数字。

int rnd = Random.Range(0,10)

虽然我目前无法对此进行测试,但我最初的想法是这条线

Instantiate(enemies[unit],spawnPoint.position, spawnPoint.rotation);

应该是

GameObject clone = Instantiate(enemies[unit],spawnPoint.position, spawnPoint.rotation) as GameObject;

最后,你是怎么做你的可能性数组的。

【讨论】:

  • 将实例化的对象存储在变量中是可选的。它根本不影响实例化。
  • 我的可能性数组是一个整数数组,其值从 0 到 100。我为所有敌人准备了另一个阵列。因此,如果我有一个长度为 3 的敌人数组,我的 Possibility 数组的值例如为 {90,10,0}。由该整数决定,我想增加产生更好敌人的机会,因为随着游戏的进行,它们产生的可能性会增加。我认为我的能力应该可以正常工作......但不知何故,游戏对象不会产生。
  • 因此您使用整数数组来确定敌人的生成概率。您是否调试过 co 例程实际上被调用了?
猜你喜欢
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多