Spawn Script problem

Level Attributes Script

static var gameTime: int;
function Update () {
gameTime= Time.time;

}

Spawn Script

var direction:String;
var waves: String[];
var wavesdone: int=0;
var currentwave:Array;

function Update(){

if (wavesdone<waves.length){
currentwave=waves[wavesdone].Split(","[0]);
    if (Level_Attributes.gameTime == currentwave[0]){
        print("Spawn Me");
    }
}

}

basically I have waves Array, thats something like string -> 5,2 where first number is the time of spawning, and second is number of enemies.

gameTime is integer to which time.time is assigned in another script. I extract number 5 from waves, and try to compare it with gameTime, so when they are equal "Spawn Me" Is Printed.

I have problem over here

if (Level_Attributes.gameTime == currentwave[0])

do I have to convert currentwave[0] to integer to be able to perform if on it? if so how can I convert string to int. if not is there something else wrong with my script?

thx in advance

Maybe try this:

if (GetComponent(Level_Attributes).gameTime == currentwave[0])

And maybe also

var currentwave : int[];

You need to convert the string to int.

int.Parse(currentwave[0])

But another hint: Time.time is a float that represents seconds. If you cast the float value to int (like you have done by assigning Time.time to your gameTime var) the gameTime variable will only change every full second. That means with a framerate of 30fps it stays for 30 frames 5. You need to increment "wavesdone" immideately when you spawn that wave so at next Update he checks for the next wave.

To compare such values with == is not very reliable. It's better to check for >=

ps. it would be much better to do that string Split stuff and even the int.Parse() only once for each wave and store the actual "timeout" value and use that for the comparison.

var direction : String;
var waves : String[];
var wavesdone : int = 0;
var currentWaveTime : int;
var currentWaveCount : int;

function NextWave() {
   if (wavesdone<waves.length){
      var waveinfo:Array = waves[wavesdone].Split(","[0]);
      currentWaveTime = int.Parse(currentwave[0]);
      currentWaveCount = int.Parse(currentwave[1]);
   }
}

function SpawnWave() {
   // Spawn wave here
   print("Spawn Me");

   wavesdone++;
   // Get next wave information
   NextWave();
}

function Start() {
   NextWave();
}

function Update() {
   if (Level_Attributes.gameTime >= currentWaveTime){
      SpawnWave()
   }
}