- Home /
how to edit only specific part of text UI ?
there's a timer
LapTime 00:00:00
private Text laptime;
private float Secfloat;
void Start ()
{
laptime = GameObject.Find("Lap Time").GetComponent<Text>();
}
void Update ()
{
SecCount();
}
public void SecCount()
{
Secfloat += Time.deltaTime;
if(Secfloat > 59)
{
Secfloat = 0;
}
laptime.text = Secfloat.ToString("F0");
}
this script replaces entire "LapTime 00:00:00" text with seconds count 1...2...3... and so on.
but I dont want that, I want seconds count to only replace middle digits in the text like so "LapTime 00:03:00" and not the entire text.
I know its doable but dont know right keywords to search the google.
also how to display time not like 1..2...3...4... but like 01...02...03...04...
thanks in advanced
Answer by Hellium · Sep 25, 2018 at 09:04 AM
private const string format = "LapTime {0:00}:{1:00}:{2:00}";
private Text laptime;
private float Secfloat;
void Start ()
{
laptime = GameObject.Find("Lap Time").GetComponent<Text>();
}
void Update ()
{
SecCount();
}
public void SecCount()
{
Secfloat += Time.deltaTime;
if(Secfloat > 59)
{
Secfloat = 0;
}
laptime.text = string.Format( format, 0, Secfloat, 0 ) ;
}
Answer by KittenSnipes · Sep 25, 2018 at 08:36 AM
@acclogin71 Seems simple enough I think I don’t really get your question but I’ll try and answer anyway. This method also allows you the added bonus of not resetting your Secfloat value just in case you need it for any other scripts. It’s format will not change but the output using the value will.
//Reference to our text
private Text laptime;
//float holding our current lap time
private float Secfloat;
void Start ()
{
//Get our Reference
laptime = GameObject.Find("Lap Time").GetComponent<Text>();
}
void Update ()
{
//Update our displayed lap time
SecCount();
}
public void SecCount()
{
//Add the current running time to our lap time
Secfloat += Time.deltaTime;
//This is a c# class that does most of the time conversion work for us
TimeSpan time = TimeSpan.FromSeconds(Secfloat);
//Then we convert that time to a suitable format
string str = time.ToString(@"mm\:ss\:fff");
//Then display our lap time
laptime.text = str;
}
Your answer
Follow this Question
Related Questions
Can't find the bug in my timer script. . . 2 Answers
Display a float number when button is clicked 4 Answers
Timescale not affect timer? (C#) 2 Answers
How to convert 00:40:00.0 to float 2 Answers
Count DownTimer hours issue 0 Answers