【发布时间】:2021-04-19 03:33:03
【问题描述】:
我正在尝试为我的游戏制作一个敌人生成器,但每当我尝试在敌人生成脚本处于活动状态的情况下玩游戏时,Unity 就会冻结。
该脚本应该基本上只允许敌人在一定时间内生成。我假设有一些无限循环,但我不知道(我对 C# 仍然相当缺乏经验)。
这段代码到底有什么问题?
EnemySpawner.cs:
{
public GameObject enemyPrefab;
public Transform spawner;
public float spawnRate = 1f;
public float nextSpawn;
public float nextSpawnAllow = 3f;
public float spawnAllowRate;
public float timer = 2f;
GameObject player;
bool ShouldSpawnEnemy = false;
// Start is called before the first frame update
void Start()
{
player = GameObject.Find("Player Ship");
}
public void SpawnCheck()
{
while (!ShouldSpawnEnemy)
{
nextSpawnAllow -= Time.deltaTime;
}
ShouldSpawnEnemy = true;
timer -= Time.deltaTime;
do
{
ShouldSpawn();
}
while (timer !<= 0);
timer = spawnAllowRate/1;
nextSpawnAllow = spawnAllowRate/1;
ShouldSpawnEnemy = false;
}
public void ShouldSpawn()
{
if(player != null)
{
if(ShouldSpawnEnemy == true)
{
nextSpawn -= Time.deltaTime;
if(nextSpawn <= 0)
{
nextSpawn = spawnRate/1;
GameObject enemy = Instantiate(enemyPrefab, spawner.position, spawner.rotation);
}
}
}
}
// Update is called once per frame
void Update()
{
SpawnCheck();
}
}
团结2020.3.4f1
【问题讨论】: