2016-07-30 178 views
1

我有在我的Unity項目中運行計時器的代碼,計時器使用DateTime運行多個場景,我試圖讓時間在編輯器中可見,以便我可以使倒計時可見在UI上。在UI Unity上顯示TimeSpan計時器

這是倒計時的腳本;

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 = TotalTime - (DateTime.UtcNow - TimeStarted); 
      if (result.TotalSeconds <= 0) 
       return TimeSpan.Zero;   
       return result; 
     } 
    } 
} 

這裏是我在每個場景中進行腳本的調用以攜帶計時器;

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

功能是工作,但我不知道如何使它在UI中可見,我已經使用下列但我沒有多少運氣試圖;

string timeLeft = GlobalCountDown.TimeLeft.TotalSeconds().ToString("D2"); 

任何幫助或建議本將不勝感激。

回答

1

使用UI文本對象。

[SerializeField] Private Text countdownTimer; // will require UnityEngine.UI at top 

更新countdownTimer的每次改變時間text財產/減少定時器值。

countdownTimer.text = your_time_left_var.ToString(); 
+0

神奇的是,計時器現在顯示在用戶界面上,並將繼續在場景之間倒計時。當我將計時器設置爲總共8秒時,計時器顯示爲00:00:08,您是否知道只顯示最後2個數字的方法,計時器將永遠不會超過10秒。 下面的代碼是得到定時器可見的東西 \t [SerializeField] \t private Text countdownTimer; and countdownTimer.text = GlobalCountDown.TimeLeft.ToString(); – Ethranes

+0

這取決於您的TimeLeft類型。如果它只是計數秒的整數計數器,那麼它應該只是整數輸出。如果您的TimeLeft以小時:分鐘:秒的格式出現,那麼您應該避免在該方法中以這種方式進行格式設置。結果只顯示秒。快捷方式使用'String.Trim()' –