我正在尝试将.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向上或向下取整)。您还需要在分钟和秒之间添加“:”。

10-07 20:09