C# 如何在unity中限制生成对象
我正在尝试在生成对象中添加限制。我希望将“繁殖”对象保留为1。但它根本不起作用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
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
}