2017-06-16 115 views
1

我试图在每次调用NewSpawn()时实例化一个僵尸预制件,这是当reSpawn变量变为'true'(通过检查器)时。但是,一旦我实例化了一个僵尸,它会对僵尸的无限循环进行无限循环。 [克隆克隆克隆]如何限制每个方法调用一个僵尸实例化? (我想打10个僵尸,而不是10,000。 谢谢! Errors for Zombie Navigation and instantiationUnity:GameObject反复实例化问题

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

public class Zombie : MonoBehaviour { 

    public GameObject zombiePrefab; 
    public Transform zombieSpawnPoint; 
    private Transform[] spawnPositions; 
    public bool reSpawn = false; 
    private bool lastToggle = false; 

    // Use this for initialization 
    void Start() { 
     spawnPositions = zombieSpawnPoint.GetComponentsInChildren<Transform>(); 
    } 

    private void NewSpawn() //spawn location of newZombie 
    { 
     Instantiate(zombiePrefab, transform.position, transform.rotation); 
     int i = Random.Range(1, spawnPositions.Length); 
     transform.position = spawnPositions[i].transform.position; 

    } 


    void Update() { //T-toggle 
     if (reSpawn != lastToggle) 
     { 
      NewSpawn(); 
      reSpawn = false; 
     } 
     else 
      lastToggle = reSpawn; 
    } 
} 

回答

3

只需拨打NewSpawn()在按钮单击事件,而不是设置reSpawn为true。

除此之外这并未”任何意义。

else 
{ 
    lastToggle = reSpawn; 
} 

他们已经等于

+0

好了,想通了,它这是因为被实例化的预制具有僵尸脚本。当我删除它时,它被单例化。但是,我遇到了僵尸预制不接受场景的玩家变换的问题,并且当我将玩家预制时,他们不再朝着玩家跑去。我如何让僵尸向玩家预制的僵尸奔跑,而不是玩家场景? – BenSmith

+0

@BenSmith这是一个完全不同的话题。考虑为此提出一个新问题。我会尽力帮助你。 – Deadzone