您将在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);停止它

09-04 00:31