Увеличивать целое число каждые указанные секунды c # - PullRequest
3 голосов
/ 17 октября 2019

Вы увидите под функцией запуска void currentWave. Я хочу увеличить его на 1 каждые 20 секунд. но не уверен, где и как это сделать. Ниже вы увидите мои объявленные переменные. Я пропустил другой раздел кода, так как он не является необходимым для того, что мне нужно.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    private int currentWave;
    private float startTime;
    private float currentTime;

Выше мои объявленные переменные, а ниже моя старшая функция с currentWave, установленным в 1, который является целым числомЯ хочу менять каждые 20 секунд.


    void Start()
    {
        currentWave = 0;
        startTime = Time.time;
        StartCoroutine(SpawnEnemy(TimeFrame[currentWave]));
    }

    void Update()
    {
        currentTime = Time.time - startTime;
        Debug.Log(currentTime);
    }
}

Я использовал свою функцию обновления, чтобы получить текущее "время работы" программы.

Ответы [ 3 ]

1 голос
/ 17 октября 2019

Используйте сопрограмму:

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);

0 голосов
/ 17 октября 2019

Вам не нужно обновлять его каждый кадр. Просто подсчитайте, когда вам это нужно. Измените поле на свойство и верните вычисленное значение.

public class Spawner : MonoBehaviour
{
    private float startTime;
    private float CurrentTime
    {
        get
        {
            return Time.time - startTime;
        }
    }
0 голосов
/ 17 октября 2019

Я думаю, что вы ищете InvokeRepeating

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...