2016-07-30 6 views
1

Unity 프로젝트에서 타이머를 실행하는 코드가 있고 타이머가 DateTime을 사용하여 여러 장면을 실행하며 시간을 보이도록 편집기에 표시하려고합니다. UI에서.UI 유니티에 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 

업데이트 countdownTimertext 속성을 변경할 때마다/타이머 값을 줄일 수 있습니다.

+0

환상적으로, 이제 타이머가 UI에 표시되고 장면 사이의 카운트 다운이 계속됩니다. 현재 타이머에 총 시간이 8 초로 설정되어있는 경우 00:00:08으로 표시됩니다. 마지막 2 자리 숫자 만 표시하는 방법을 알고 있습니까? 타이머는 10 초를 넘지 않습니다. 다음 코드를 볼 타이머를 가지고 무엇 \t [SerializeField] \t 개인 텍스트 countdownTimer; 및 countdownTimer.text = GlobalCountDown.TimeLeft.ToString(); – Ethranes

+0

TimeLeft 유형에 따라 다릅니다. 정수 카운터 일 경우 정수 출력이어야합니다. TimeLeft가 시간 : 분 : 초 형식으로 오면 그 방법으로 형식을 지정하지 않아야합니다. 결과에는 초가 표시됩니다. 바로 가기 사용'String.Trim()' –