2017-10-14 77 views
0

我想逐个实例化单元。怎么一个一个实例化?

void Update() { 
    timer += Time.deltaTime; 
    Enemies[] enemies = stage.enemies; 
    if (timer >= 0) { 
     Vector3 enemyPos = new Vector3 (transform.position.x, Random.Range (-5.0f, 5.0f), transform.position.z); 
     for (int i = 0; i < enemies.Length; i++) { 
      for (int j = 0; j < enemies[i].count; j++) { 
       print (enemies.Length); 
       print (enemies[i].count); 
       GameObject spawn = Instantiate (enemyPrefeb, enemyPos, Quaternion.identity); 

       timer = delayTimer; 
      } 
     } 

    } 
} 

da 我用double for循环。目前的状态像一个单位产生10个单位(在数据库中)(重叠)

如何解决它?

我想延迟一个一个地产卵。

+0

检查[this](http://answers.unity3d.com/questions/1304244/instantiating-grid-of-objects-starting-at-the-bott.html)对于不同的定位。并且为了计时,您可以创建自己的计时器或使用[coroutine](https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html) – Thalthanas

回答

1

尝试像这样(这会生成每秒一个敌人):

float delayTimer = 1; 

void Update() { 
    timer += Time.deltaTime; 
    Enemies[] enemies = stage.enemies; 
    if (timer >= delayTimer) { 
     Vector3 enemyPos = new Vector3 (transform.position.x, Random.Range (-5.0f, 5.0f), transform.position.z); 
     GameObject spawn = Instantiate (enemyPrefeb, enemyPos, Quaternion.identity); 
     timer = 0; 
     for (int i = 0; i < enemies.Length; i++) { 
      for (int j = 0; j < enemies[i].count; j++) { 
       print (enemies.Length); 
       print (enemies[i].count); 
      } 
     } 
    } 
} 

你错了两条线,你必须检查是否计时器是高达delayTimer然后产卵ENMY和复位定时器0