我正在尝试将.text更改为以下格式:
00∶00
但我却得到了
0: 0
我需要更改什么才能更正代码?
private void Update()
{
if (!chestButton.IsInteractable ())
{
if (IsChestReady ()) {
chestButton.interactable = true;
chestTimer.SetActive (false);
chestTimerBg.SetActive (false);
newGift.SetActive (true);
return;
}
//Set Timer
ulong diff = ((ulong)DateTime.Now.Ticks - lastChestOpen);
ulong m = diff / TimeSpan.TicksPerMillisecond;
float secondsLeft = (float)(msToWait - m) / 1000.0f;
string r = " ";
//Hours
r += ((int)secondsLeft / 3600).ToString() + ": ";
secondsLeft -= ((int)secondsLeft / 3600) * 3600;
//Minutes
r += ((int)secondsLeft / 60).ToString();
//Seconds
r += (secondsLeft % 60).ToString();
chestTimerTxt.text = r;
}
}
最佳答案
你忘记了几秒钟的整数转换。
r += ((int)secondsLeft % 60).ToString();
但是,最简单的方法是使用时间跨度。
TimeSpan ts = TimeSpan.FromSeconds((int)secondsLeft);
chestTimerTxt.text = ts.ToString(@"hh\:mm\:ss");
如果您尝试以手动方式执行此操作,则还必须检查是否需要添加额外的0,例如secondsleft=50 vs 9。如果您仍然想这样做,那么在执行所有计算之前尝试将secondsleft转换为int(使用math.round向上或向下取整)。您还需要在分钟和秒之间添加“:”。