您将在void start函数下看到currentWave。我希望它每20秒增加1。但不确定这样做的地点和方式。在下面,您将看到我声明的变量。我省略了另一部分代码,因为它对于我所需要的不是必需的。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
private int currentWave;
private float startTime;
private float currentTime;
上面是我声明的变量,下面是我的stary函数,其中currentWave设置为1,这是我想每20秒更改一次的整数。
void Start()
{
currentWave = 0;
startTime = Time.time;
StartCoroutine(SpawnEnemy(TimeFrame[currentWave]));
}
void Update()
{
currentTime = Time.time - startTime;
Debug.Log(currentTime);
}
}
我使用了更新功能来获取程序的当前“运行时间”。
最佳答案
使用协程:
private IEnumerator waveIncrementer;
void Start()
{
currentWave = 0;
startTime = Time.time;
StartCoroutine(SpawnEnemy(TimeFrame[currentWave]));
waveIncrementer = IncrementWave();
StartCoroutine(waveIncrementer);
}
IEnumerator IncrementWave()
{
WaitForSeconds waiter = new WaitForSeconds(20f);
while (true)
{
yield return waiter;
currentWave++;
}
}
如果要立即增加,请将
currentWave++
放在yield return waiter;
之前:IEnumerator IncrementWave()
{
WaitForSeconds waiter = new WaitForSeconds(20f);
while (true)
{
currentWave++;
yield return waiter;
}
}
然后,您可以使用
StopCoroutine(waveIncrementer);
停止它