Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / Javascript

How to Create a Countdown Timer and Show Current Time in Unity3D

0.00/5 (No votes)
1 Feb 2015CPOL1 min read 23.4K  
How to create a Countdown Timer and show current time in Unity3D

TimerTime

demo  forkMe

  1. Create a new 2D project:

    unityCreateNewProject

  2. Optionally, download some background image (I used this one) and drag it to the Assets folder:

    assetsFolder

  3. Drag the background image to the Hierarchy:

    Hierarchy

  4. Adjust the size of the Camera to 8:

    CameraSize

  5. Hierarchy->Create->UI->Text:

    AddingText

  6. Click on Canvas in Hierarchy and set the Render mode:

    CanvasRenderMode

  7. Click on Text and change the settings (Positions, Width, Height, Text, Font Site):

    textSettings

  8. Rename the Text to TimerText.
  9. Duplicate the TimerText and rename to TimeText:

    duplicate

  10. Change y position of TimeText to -200:positionChange
  11. Hierarchy -> Create -> Create Empty:

    CreateEmpty

  12. Rename it to GameController
  13. Inspector -> Add Component -> New Script (name it Timer and select JavaScript):

    AddScript

  14. Paste the following code:
    JavaScript
    #pragma strict
    
    var timer: float = 70;
    var isFinishedLevel : boolean = false;
    public var displayText : UnityEngine.UI.Text;
    public var timeText : UnityEngine.UI.Text;
    
    private var oldTimer : float;
    
    function Start(){
    	oldTimer = timer;
    }
    
    function Update()
    {
    	if (!isFinishedLevel) {
    		timer -= Time.deltaTime;
    	} 
    
    	if (timer > 0) {
    		var minsDisplay : String = parseInt( timer / 60 ).ToString();
    		var secsDisplay : String = parseInt( timer ).ToString();
    		 
    		if ( (timer - ( parseInt(minsDisplay) * 60)) > 10 ) {
    		     secsDisplay = parseInt( timer - ( parseInt(minsDisplay) * 60) ).ToString();
    		} 
    		else {
    			secsDisplay = "0" + parseInt( timer - 
                              ( parseInt(minsDisplay) * 60) ).ToString();
    		}
    		
    		displayText.text = minsDisplay + " : " + secsDisplay;
    	} 
    	else {
    	 	timer = oldTimer;
    	}
    	
    	CurrentTime();
    }
    
    function CurrentTime() { 
    	var dt : System.DateTime = System.DateTime.Now;
    	var h : int = dt.Hour; 
    	var m : int = dt.Minute; 
    	var s : int = dt.Second;
    
    	timeText.text = h + ":" + m + ":" + s;
    }
  15. Drag TimerText and TimeText to the script from Hierarchy:

    dragging

  16. [le problems] – Run the program, and you’ll run into few issues:
    1. If you open up any other window, you will notice that the timer will stop, and continue counting once you return to the Unity window [edit: this seems to be expected behavior and in order to “fix” this, you have to set the “Edit -> Project Settings -> Player -> Run In Background” option (from here)].
    2. TimerText and TimeText are not “ticking off” at the same time.
  17. If someone has information on how to solve this, please comment and I’ll update the post once the solution is found.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)