我需要在关卡中显示时间,其中我想要显示玩家完成其关卡的时间,我正在计算适当的时间,但是这里没有以正确的格式显示我的代码到目前为止。 我需要这种格式的小时:分钟:秒 但它以这种格式显示 秒:纳秒 如果60秒过去了,它没有转换为1分钟,它连续增加,61,62等等
public void Start()
{
init_time = Time.time;
}
public void Update()
{
if (game_ended_bool)
{
return;
}
init_time = init_time + 1.0f;
string time_to_show = Mathf.Floor((init_time/60.0f)).ToString("00")+":"+(init_time%60).ToString("00");
time_remain_text.text = time_to_show;
time_taken_to_com_level = init_time;
// print (time_to_show);
}
答案 0 :(得分:3)
使用string.Format
让事情变得干净利落。我已经在您的秒数上添加了Mathf.FloorToInt
,告诉我它是否符合您的需求。
此外,您应该使用Time.time
来获取正确的时间。您不必通过向+ 1
init_time
来自行处理此问题
init_time = Time.time;
string time_to_show = string.Format( "{0:00}:{1:00}", Mathf.FloorToInt( ( init_time / 60.0f ) ), Mathf.FloorToInt( init_time ) % 60 )
答案 1 :(得分:3)
它没有显示纳秒,但是每次调用Update()时,你都会为你的计时器增加1秒 - 这是每秒很多次。
init_time = init_time + 1.0f;
将上述行替换为:
init_time = init_time + Time.deltaTime; // deltaTime adds the time it took to complete the last frame.