Unity C#倒计时持续到场景

本文关键字:倒计时 Unity | 更新日期: 2023-09-27 17:59:10

嗨,我写了一个C#脚本,然后我可以在另一个脚本中调用它来跟踪不同场景之间的剩余时间,然后在计时器达到0时加载一个场景。我相信这两个脚本都写得正确,但当计时器达到0时没有任何操作,我认为问题是我没有将代码放在正确的位置,但我真的不确定,我已经尝试将它添加到我的启动函数和更新函数中。

这是静态类的脚本;

public static class GlobalCountDown
{
    static DateTime TimeStarted;
    static TimeSpan TotalTime;
    public static void StartCountDown(TimeSpan totalTime)
    {
        TimeStarted = DateTime.UtcNow;
        TotalTime = totalTime;
    }
    public static TimeSpan TimeLeft
    {
        get
        {
            var result = DateTime.UtcNow - TimeStarted;
            if (result.TotalSeconds <= 0)
                SceneManager.LoadScene("Lose");
                return TimeSpan.Zero;           
                //return result;
        }
    }
}

这是我在每个游戏场景中打电话检查剩余时间;

GlobalCountDown.StartCountDown (TimeSpan.FromSeconds (5));

在编译脚本时,我收到了一个警告"指定了专用字段"GlobalCountDown.TotalTime",但从未使用过它的值",但我不确定如何修复它。

如有任何帮助或建议,我们将不胜感激。

Unity C#倒计时持续到场景

更改此

var result = DateTime.UtcNow - TimeStarted;

到此

var result = TotalTime - (DateTime.UtcNow - TimeStarted);

在你的行为中做这个

void Start() 
{
  GlobalCountDown.StartCountDown (TimeSpan.FromSeconds (5)); 
}
void Update() 
{
    if (GlobalCountDown.TimeLeft == TimeSpan.Zero)
      SceneManager.LoadScene("Lose");  
}

并从GlobalCountDown类中删除SceneManager代码