2016-05-26 6 views
0

J'espère que quelqu'un peut m'aider avec ce problème. J'essaie de coupler un IEnumerator avec mon script de pool d'objets pour instancier des ennemis dans les vagues. Mais je ne peux pas les amener à instancier sans se détruire immédiatement 2 ou 3 fois puis en instanciant une vague d'ennemis et en ne reproduisant plus jamais. Quelqu'un peut-il m'aider à voir où je me trompe ici?Comment est-ce que j'objecte correctement les vagues ennemies du pool d'objets avec un IEnumerator?

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 

public class SpawnMaster : MonoBehaviour { 

public int enemyCount = 4; 
public float spawnWait=0.5f; 
public float startWait=1; 
public float waveWait=3;    
public Transform[] spawnPoints; 
private int currentWave = 0; 
private int waveCount = 10; 

private IEnumerator spawnWaves; 
private IEnumerator goHorde; 
bool isSpawning = false; 



void Update() 
{ 
if(!isSpawning) 
{ 
    isSpawning = true; 
    StartCoroutine(SpawnWaves(currentWave)); 
} 
} 

IEnumerator SpawnWaves (int currentWave) 
{ 
    Debug.Log("Spawning " + currentWave + "currentWave"); 
      for (int i = 0; i < waveCount; i++) 
      { 
       StartCoroutine(GoHorde()); 
      } 
      currentWave += 1; 
     yield return new WaitForSeconds (waveWait); 

    //We've spawned, so start another spawn  
    isSpawning = false; 
} 

IEnumerator GoHorde() 
{ 
    GameObject beetle01 = BeetlePool.current.GetPooledObject(); 
if(beetle01 == null) 
yield return null; 

// Only pick a new spawn point once per wave 
int spawnPointIndex = Random.Range (0, spawnPoints.Length); 

for (int j = 0; j < enemyCount; j++) 
    { 
beetle01.transform.position = spawnPoints[spawnPointIndex].position; 
beetle01.transform.rotation = spawnPoints[spawnPointIndex].rotation; 
beetle01.SetActive(true); 
yield return new WaitForSeconds (spawnWait); 
    }  
} 
} 

Répondre

0

Je changerais:

if (! IsSpawning)

à:

si (isSpawning = true!)

Ou:

si (isSpawning == false)

Aussi si vous allez avoir plusieurs vagues d'ennemis qui sont instanciées et détruites. Vous devriez regarder dans la mise en commun des objets pour économiser de la mémoire.