Unity3D C #: Spawner продолжает создавать экземпляры, превышающие назначенные значения - PullRequest
0 голосов
/ 02 ноября 2018

В своем коде spawner я пытаюсь назначить предел создания каждой волны, настраивая его.

Первая волна верна, но во 2-й волне появляется еще один объект, который был порожден, и он не следует за rateOfSpawn

Может быть, он не обновляет свои значения с wave?

Спасибо.

public Wave[] waves;
[HideInInspector]
public int waveIndex = 0;
private int totalObjectsInWave;
[HideInInspector]
public int destroyedObjectsInWave;

private void OnEnable()
{
    StartCoroutine(SpawnObjects());
}

IEnumerator SpawnObjects()
{
    yield return new WaitForSeconds(waitStartTime);

    Wave wave = waves[waveIndex];

    while (allowSpawning)
    {
        for (int w = 0; w < waves.Length; w++)
        {
            GetComponent<Gravity>().velocityOfInfluence = wave.speedOfEnemy;

            totalObjectsInWave = 0;
            totalObjectsInWave = wave.amountOfTiny + wave.amountOfSmall + wave.amountOfLarge;

            for (int t = 0; t < wave.amountOfTiny; t++)
            {
                SpawnTiny(); // Instantiates

                yield return new WaitForSeconds(1 / wave.rateOfSpawn);
            }

            for (int s = 0; s < wave.amountOfSmall; s++)
            {
                SpawnSmall(); // Instantiates

                yield return new WaitForSeconds(1 / wave.rateOfSpawn);
            }

            for (int l = 0; l < wave.amountOfLarge; l++)
            {
                SpawnLarge(); // Instantiates

                yield return new WaitForSeconds(1 / wave.rateOfSpawn);
            }

            yield return new WaitUntil(() => destroyedObjectsInWave == totalObjectsInWave);
            {
                waveIndex++;

                yield return new WaitForSeconds(timeBetweenWaves);
            }
        }
    }
}

[System.Serializable]
public class Wave
{
public float rateOfSpawn;
public float speedOfEnemy;

public int amountOfTiny;
public int amountOfSmall;
public int amountOfLarge;
}

1 Ответ

0 голосов
/ 02 ноября 2018
Wave wave = waves[waveIndex];

while (allowSpawning) { ... }

Вы никогда не выходите из этого цикла, чтобы получить другой Wave.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...