Unity C#倒计时将持续通过场景

时间:2016-07-28 19:05:48

标签: c# unity3d monodevelop unity5 static-classes

您好我编写了一个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));

编译脚本时出现警告&#39;私有字段`GlobalCountDown.TotalTime&#39;已分配,但其值从未使用过&#39;但我不确定如何解决它。

任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

更改此

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代码