Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何阻止敌人在Unity 3D中繁殖?_C#_Unity3d - Fatal编程技术网

C# 如何阻止敌人在Unity 3D中繁殖?

C# 如何阻止敌人在Unity 3D中繁殖?,c#,unity3d,C#,Unity3d,我想阻止敌人在其中一个命中“完成”标记时产卵 以下是产生敌人的脚本: public class spawn : MonoBehaviour { public GameObject enemy; private float spawnpoint; public float xlimit = 12f; float spawnNewEnemyTimer = 1f; void Start() { } public void Upda

我想阻止敌人在其中一个命中“完成”标记时产卵

以下是产生敌人的脚本:

public class spawn : MonoBehaviour {

    public GameObject enemy;
    private float spawnpoint;
    public float xlimit = 12f;
    float spawnNewEnemyTimer = 1f;

    void Start()
    {

    }

    public void Update()
    {
        spawnNewEnemyTimer -= Time.deltaTime;

        if (spawnNewEnemyTimer <= 0 )
        {
            spawnNewEnemyTimer = 3;
            GameObject nemico = Instantiate(enemy);
        }
    }

这个代码怎么了?谢谢

产生新敌人的逻辑在spawn类中。决定是否应该停止繁殖敌人的逻辑驻留在敌人类中

只要你想让敌人在命中带有finish标记的对象时停止繁殖,你就可以成功地将end game布尔值设置为true

void OnTriggerEnter(Collider other){
    if (other.tag == "Finish"){
        Debug.Log("hai perso!");
        endGame = true;
    }
}
太好了!但实际上你并没有用它来阻止繁殖。 到目前为止,这个变量是每个敌人的局部变量。因此,如果在“开始”和“更新”功能中包含检查,则它们将仅为接触“完成”对象的特定敌人激活。这不是你想要的

您希望Spawn类检查endgame变量,如果它处于活动状态,则停止生成敌人

要做到这一点,您必须能够以某种方式从Spawn访问endgame变量,我建议您将endgame变量设置为te Spawn类的成员。并在每个敌人中包含对繁殖的引用

总之,它可能看起来像这样:

public class Spawn: MonoBehaviour{
    public boolean endgame = false;
    GameObject nemico = Instantiate(Enemy);
    nemico.ParentSpawn = this
}

public class Enemy: MonoBehaviour{
    public Spawn spawn;
    void OnTriggerEnter(Collider other){
        if (other.tag == "Finish"){
            Spawn.endGame = true;
        }
    }
}
然后,您可以使用“产卵”中的endgame布尔值来检查是否应该继续产卵敌人

public class Spawn: MonoBehaviour{
    public boolean endgame = false;
    GameObject nemico = Instantiate(Enemy);
    nemico.ParentSpawn = this
}

public class Enemy: MonoBehaviour{
    public Spawn spawn;
    void OnTriggerEnter(Collider other){
        if (other.tag == "Finish"){
            Spawn.endGame = true;
        }
    }
}