Unity3D C#定时器以毫秒为单位显示

时间:2017-07-13 23:37:01

标签: c# android unity3d

我试图将.text更改为以下格式:

00:00:00

但我得到了 0:00.00000 我需要更改什么才能更正我的代码?

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;

    }
}

1 个答案:

答案 0 :(得分:7)

你忘记了秒转换的int转换。

BYTE [myvar]

但是,最简单的方法是使用TimeSpan。

r += ((int)secondsLeft % 60).ToString();

如果您尝试按照自己的方式手动执行此操作,则还需要检查是否需要添加额外0的情况 - 例如,如果secondsLeft = 50 vs 9.如果您仍然想要这样做,然后在进行所有计算之前尝试将secondsLeft转换为Int(使用Math.Round向上或向下舍入)。您还需要添加":"分钟和秒之间。