private void Spawn() { Debug.Log("Max: " + waves[wave].max); Debug.Log("Killed: " + waves[wave].killed); Debug.Log("Spawned: " + waves[wave].spawned); Debug.Log("Simultaneus: " + waves[wave].simultaneus); if (waves[wave].max == waves[wave].killed) { wave++; Debug.Log("Wave: " + wave); return; } if (nextSpawn != 0f && Time.time < nextSpawn) { return; } if (waves[wave].spawned - waves[wave].killed >= waves[wave].simultaneus) { return; } if (waves[wave].spawned == waves[wave].max) { return; } if (nextSpawn == 0f || Time.time > nextSpawn) { Debug.Log("Spawning"); int index = Random.Range(0, spawnPositions.Length); GameObject npc = Instantiate(enemy, spawnPositions[index].transform.position, Quaternion.identity); EnemyCtrl script = npc.GetComponent <EnemyCtrl>(); UnityEvent deathEvent = script.GetEvent(); deathEvent.AddListener(Killed); nextSpawn = Time.time + waves[wave].delay; waves[wave].spawned++; } }