c# - 如何统一限制生成对象
问题描述
我正在尝试在生成对象中添加限制。我想将 spawn 对象保持为一个。但它根本不起作用。
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;
}
解决方案
您只需要一个计数器和一个变量来控制您的最大计数。只要记住在对象消失后减少计数器。
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;
}
}
}
}
}
另一种选择是在 Spawn04 对象上使用静态变量,如下所示:
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
}
希望这对如何解决这个问题有一些启发。
推荐阅读
- laravel - 如果只剩下 1 条记录,Laravel 将无法删除
- python - 为基于 Python 的编码设置用户速率限制(对于最终用户和我自己)(使用 AWS Cognito?)的简单方法是什么
- r - 在 R 中的数据框列表中应用的代码有什么问题?
- python - 用硒查找跨度
- python - 如何在 sublime 中使用 python 变量运行函数
- python - 我正在尝试将 js_class 添加到日历视图,但出现以下错误
- javascript - npm 无法在 expo-cli React Native 中为 Firebase 安装 grpc@1.24.2
- node.js - Mongodb从数组中删除对象
- python - Python 函数:Tkinter 菜单和菜单项
- algorithm - 获取数组中的所有路径