【问题标题】:creating a game clock with custom time创建具有自定义时间的游戏时钟
【发布时间】:2016-05-23 09:35:03
【问题描述】:

我正在尝试使GameClock 像一个真正的时钟,但具有自定义时间。 时钟正在运行,但它正在延迟,我找不到问题。感谢您的帮助。

IEnumerator Start()
{
    while (true) {
        Sec = DateTime.Now.Second;
        if (Hour == 23 && Min == 59 && Sec == 0){
            Hour = 0;
            Min = 0;
        } else if (Min == 59 && Sec == 0){
            Min = 0;
            Hour += 1;
        } else if (Sec == 0) {
            Min += 1;
        } 
        yield return new WaitForSeconds (1f);
    }
}

【问题讨论】:

  • “延迟”是什么意思?它会以某种方式延迟您的程序吗?这段代码怎么称呼?
  • 延迟是什么意思,就是时间每分钟延迟1秒,每小时1分钟,每天24分钟。
  • 您知道由于计时器的异步特性,您有一些延迟,对吧?
  • 我知道没有办法做到 100% 准确,但必须设法改善延迟,因为每天 24 分钟非常高。
  • 您能否提及HourMin 的值是如何分配的?

标签: c# unity3d timer clock


【解决方案1】:

我觉得应该是这样的

while (true) {
    Sec = DateTime.Now.Second;
    if (Hour == 23 && Min == 59 && Sec == 59){
        Hour = 0;
        Min = 0;
    } else if (Min == 59 && Sec == 59){
        Min = 0;
        Hour += 1;
    } else if (Sec == 59) {
        Min += 1;
    } 
    yield return new WaitForSeconds (1f);
}

【讨论】:

  • 如果您 显示 更改(标记它们)会很好:无论是在文字中还是作为代码中的 cmets。对为什么 OP 代码不起作用(出了什么问题)的一些解释也会很好。
  • 我以前用过这种代码,用了 59 秒。但延迟是一样的。
【解决方案2】:

当您可以轻松打印出来时,我不明白您为什么要做所有这些工作:

    Debug.Log(System.DateTime.Now.ToString("hh:mm:ss"));
    Debug.Log(System.DateTime.Now.Hour.ToString());
    Debug.Log(System.DateTime.Now.Minute.ToString());
    Debug.Log(System.DateTime.Now.Second.ToString());

【讨论】:

  • 哦,听起来像是学校作业:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 2023-02-01
  • 2017-03-28
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多