I want to display also the miliSeconds so it will be something like this:
minutes : seconds : miliSeconds
2 : 34 : 99
so I need to add miliSeconds to this code
var startTime:float;
var timeRemaining:float;
var minutes:int;
var seconds:int;
var miliSeconds:int;
var timeStr:String;
function Start () {
startTime = 130.0;
}
function Update () {
timeRemaining = startTime - Time.time;
minutes = timeRemaining / 60;
seconds = timeRemaining % 60;
//miliSeconds = ?
timeStr = minutes.ToString()+":"+seconds.ToString("D2");
guiText.text = timeStr;
}
Is this counting up or counting down?
You could possibly use a substr function
for example:
var startTime : float = 0.0;
var minutes : string;
var seconds : string;
var milliseconds : string;
function Update()
{
startTime += Time.time;
minutes = startTime.ToString().Substring(1,2);
seconds = startTime.ToString().Substring(3,2);
milliseconds = startTime.ToString().Substring(5,2);
guiText.text = minutes + “:” + seconds + “:” + milliseconds;
}
This may possibly work, give it a whirl
Here’s another way that you could approach the problem. This way will automatically add and configure a GUIText component simply by adding this script to a GameObject. It doesn’t rely on Update() so it uses less resources but still maintains tenth of a second accuracy and stops invoking once the countdown is finished unlike Update(). It can be started or restarted by calling Begin(). It’s duration can also changed since it isn’t hard coded and by assigning a callback action it is able to perform any actions required once the countdown is over.
using System;
using UnityEngine;
[RequireComponent(typeof(GUIText))]
public class CountDownTimer : MonoBehaviour
{
public int DurationInSeconds = 130;
private TimeSpan duration;
private DateTime startTime;
public Action Callback { get; set; }
private void Awake()
{
guiText.transform.localScale = Vector3.zero;
guiText.transform.position = new Vector3(0.5f, 0.5f, 0);
}
private void Start()
{
Begin();
}
public void Begin()
{
duration = new TimeSpan(0, 0, DurationInSeconds);
startTime = DateTime.Now;
if (!IsInvoking("CountDown"))
InvokeRepeating("CountDown", 0, 0.1f);
}
private void CountDown()
{
var timeRemaining = duration - (DateTime.Now - startTime);
var fractionalSeconds = Math.Round(timeRemaining.Milliseconds / 1000f, 1);
fractionalSeconds = (fractionalSeconds - (int)fractionalSeconds) * 10;
if (fractionalSeconds < 0)
{
fractionalSeconds = 0;
CancelInvoke("CountDown");
if (Callback != null)
Callback();
}
guiText.text = string.Format("{0:smile:2}:{1:smile:2}.{2}",
timeRemaining.Minutes,
timeRemaining.Seconds,
fractionalSeconds);
}
}