如何制作通电定时器?

How to make powerup timer?

我想制作倒计时计时器,当他处于活动状态时,它会 return 布尔值,这样我可以检查其他脚本是否处于活动状态,如果不是,则需要给予正常点数。 . 我想让它变得更复杂,如果计时器处于活动状态,我想在计时器上添加时间,如果不是,那么我们在倒计时时使用默认时间...

我不知道如何在定时器未结束的情况下需要添加时间时专门使用courutine..

让我们举个例子: 我拿起电源,计时器开始计时 5 秒,从 0 开始计时。 如果我再次拿起 powerup 并且计时器开启让我们说 3,Power up 现在需要 8 秒。当通电结束时,当玩家拿起新的时,他必须从 5 秒开始..

这是我的代码,它无法正常工作,我的代码也没有在启动时增加启动时间的功能。换句话说,我不知道我该怎么做检查 powerup 是否处于活动状态,如果是,则将计数器再增加 5 秒..

这里的代码不包含添加时间它只包含工作计数器..

 void startDoublePoints()
{
    StartCoroutine("doublePoints");
    Time.timeScale = 1;
}
//Simple courutine
IEnumerator doublePoints()
{
    while (true)
    {
        yield return new WaitForSeconds(1);
        timeLeft--;
    }
}

我希望有人能更多地解释我如何实现我的目标。我希望我解释了我需要实现的目标。如果你不明白什么,请在评论中提问,我会尝试再次解释..

非常感谢社区,如果没有这个好地方,我不知道如何学习任何东西:)

float powerUpTimer;
bool isDoublePoints = false;

void Update()
{
    // Check timer only when Power up time
    if(isDoublePoints)
    {
        // Countdown the timer with update time
        powerUpTimer -= Time.deltaTime;
        if(powerUpTimer <= 0)
        {
            // End of power up time 
            isDoublePoints = false;
            powerUpTimer = 0;
        }
    }
}

// Add any time player picks to timer
public void OnPickPowerUp(float buffTime)
{
    isDoublePoints = true;
    powerUpTimer += buffTime;
}