简体   繁体   中英

unresponsive — operator in a for loop with multiple variables C#

Just as the title says, I have a waveManaging system that spawnsEnemies based on enemies that are yet to spawn and remain alive.

for (int enemiesRemainingToSpawn = currentWaveNumber ; enemiesRemainingToSpawn > 0;enemiesRemainingToSpawn -- , enemiesRemainingAlive ++)
    {
        print("enemies spawning" + enemiesRemainingToSpawn);
        print("enemies alive" + enemiesRemainingAlive);
    }

This is just a test right now, but it seems that 'enemiesRemaingToSpawn --' is not working while 'enemiesRemainingAlive ++' is.

On the GameDev Discord, no one has found anything wrong with it which is why I am here. It looks fine to me as well. I have tried putting it within the body of the loop but that does not work as well. i have specified it within the initializing(first) section of the for loop and again this does not work.

What is the problem at hand?

edit:

public int enemiesRemainingToSpawn;
public int enemiesRemainingAlive;
public float afterWavePrepTime = 5f;
public GameObject basicEnemyPreFab;
public Transform[] spawnPoints;


private bool isWaveFinished = false;
private bool startNewWave = false;
public int currentWaveNumber;

void spawnEnemies ()
{
    int spawnPointIndex = Random.Range(0, spawnPoints.Length);

    for (int enemiesRemainingToSpawn = currentWaveNumber ; enemiesRemainingToSpawn > 0;enemiesRemainingToSpawn -- , enemiesRemainingAlive ++)
    {
        print("enemies spawning" + enemiesRemainingToSpawn);
        print("enemies alive" + enemiesRemainingAlive);
    }
}

The output is that enemiesRemainingAlive constantly goes up because EnemiesRemainingToSpawn does not go down, concluding in an endless loop. remainingtospawn = 1, enemiesremainingalive ++

Hi I try to run your code in locally by excluding your objects .Its running well

  public static void spawnEnemies() { int enemiesRemainingAlive = 0; double afterWavePrepTime = 5.0; bool isWaveFinished = false; bool startNewWave = false; int currentWaveNumber; Random x = new Random(); currentWaveNumber = x.Next(1, 7); for (int enemiesRemainingToSpawn = currentWaveNumber; enemiesRemainingToSpawn > 0; enemiesRemainingToSpawn--, enemiesRemainingAlive++) { Console.WriteLine("enemies spawning" + enemiesRemainingToSpawn); Console.WriteLine("enemies alive" + enemiesRemainingAlive); } Console.ReadLine(); } //out put // enemies spawning2 //enemies alive0 //enemies spawning1 //enemies alive1 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM