2016-05-26 6 views
0

誰かがこの問題を手伝ってくれることを願っています。私は波で敵をインスタンス化するためにオブジェクトのプールスクリプトとIEnumeratorを結合しようとしています。しかし、私はそれらを即座に2〜3回破壊せずに、次に敵の波を1つインスタンス化し、決して再び産卵することなくインスタンス化することはできません。私がどこに間違っているのか誰にでも助けてくれますか?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); 
    }  
} 
} 

答えて

0

私が変更になります。

を(isSpawning!)

場合に:(!isSpawning =真)

場合

または:

(isSpawning場合== false)

また、インスタンス化されて破壊されている複数の敵の波を持っている場合。メモリを節約するためにオブジェクトプーリングを調べる必要があります。

関連する問題