C# 如何在unity中限制生成对象

C# 如何在unity中限制生成对象,c#,unity3d,C#,Unity3d,我正在尝试在生成对象中添加限制。我希望将“繁殖”对象保留为1。但它根本不起作用 using UnityEngine; using System.Collections; using System.Collections.Generic; public class Spawn : MonoBehaviour { public Spawn04[] pest; public GameObject plantPest; void Start () { } [System.Obsolete

我正在尝试在生成对象中添加限制。我希望将“繁殖”对象保留为1。但它根本不起作用

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

public class Spawn : MonoBehaviour {

public Spawn04[] pest;
public GameObject plantPest;





void Start () {
}

[System.Obsolete]
void Update () {
if(plantPest.active)
{
    SpawnObjects();
}


}
void SpawnObjects()
{
    int i = Random.Range(0, 100);

    for(int j = 0; j < pest.Length; j++)
    {
        if(i >= pest[j].minProbabilityRange && i <= pest[j].maxProbabilityRange)
        {
            Instantiate(pest[j].spawnObject, transform.position, transform.rotation);
            break;
        }
        if(pest[j].pestCount >= pest[j].maxNumber)
        {
            Destroy(this.gameObject);
        }
    }
  }
}

[System.Serializable]
public class Spawn04
{
public GameObject spawnObject;
public int minProbabilityRange = 0;
public int maxProbabilityRange = 0;
public int maxNumber = 1;
public int pestCount = 0;
}
使用UnityEngine;
使用系统集合;
使用System.Collections.Generic;
公共类繁殖:单行为{
公害;
公共游戏对象植物害虫;
无效开始(){
}
[系统.过时]
无效更新(){
如果(plantPest.active)
{
产卵对象();
}
}
void对象()
{
int i=随机范围(0,100);
对于(int j=0;j=pest[j].minProbabilityRange&&i=pest[j].maxNumber)
{
摧毁(这个游戏对象);
}
}
}
}
[系统可序列化]
公共类
{
公共游戏对象;
public int minProbabilityRange=0;
公共int maxProbabilityRange=0;
公共整数maxNumber=1;
公共计数=0;
}

您只需要一个计数器和一个变量来控制最大计数。只要记住在对象被释放后减小计数器

public class Spawn : MonoBehaviour {
    
    public Spawn04[] pest;
    public GameObject plantPest;
    
    public int maxPests = 10;          // ADDED
    private int pestsSpawned = 0;      // ADDED

    [System.Obsolete]
    void Update () {
        if(plantPest.active)
        {
            SpawnObjects();
        }
    }
    void SpawnObjects()
    {
        // NEW CHECK
        if (pestsSpawned < maxPests) {
            int i = Random.Range(0, 100);

            for(int j = 0; j < pest.Length; j++)
            {
                if(i >= pest[j].minProbabilityRange && i <= pest[j].maxProbabilityRange)
                {
                    Instantiate(pest[j].spawnObject, transform.position, transform.rotation);
                    pestsSpawned++;     // COUNT TRACKER
                    break;
                }
                
            }
        }
    }
}
  
公共类繁殖:单行为{
公害;
公共游戏对象植物害虫;
public int max=10;//已添加
private int pestsSpawned=0;//已添加
[系统.过时]
无效更新(){
如果(plantPest.active)
{
产卵对象();
}
}
void对象()
{
//新支票
如果(pestsSpawned如果(i>=pest[j].minProbabilityRange&&i你说的限制是什么意思?你的代码似乎暗示你正在寻找一个繁殖的概率。是的,我的繁殖对象有一个概率。但我想添加一个最大数量的繁殖对象。在实例化时保留当前繁殖的敌人的计数,并向他们传递死亡回调。当敌人死亡时,减少计数并d再次生成。为什么您的
更新
标记为
[过时]
public class Spawn : MonoBehaviour {
    
    public Spawn04[] pest;
    public GameObject plantPest;
    
    public int maxPests = 10;     // ADDED

    [System.Obsolete]
    void Update () {
        if(plantPest.active)
        {
            SpawnObjects();
        }
    }
    
    void SpawnObjects()
    {
        // NEW CHECK
        if (Spawn04.spawnCount <= maxPests) {
            int i = Random.Range(0, 100);

            for(int j = 0; j < pest.Length; j++)
            {
                if(i >= pest[j].minProbabilityRange && i <= pest[j].maxProbabilityRange)
                {
                    Instantiate(pest[j].spawnObject, transform.position, transform.rotation);
                    Spawn04.spawnCount++;     // COUNT TRACKER
                    break;
                }
                
            }
        }
    }
}
  
[System.Serializable]
public class Spawn04
{
    
    public GameObject spawnObject;
    public int minProbabilityRange = 0;
    public int maxProbabilityRange = 0;
    public static int spawnCount = 0;     // ADDED
}