[英]How I can make "Time" to be update constantly
我是统一的初学者游戏开发者,我“独自”开始新的小项目,在我的游戏中我遇到了一个小问题。
我的问题是时间,即游戏中的时钟不同步,不同步,我有些怀疑。
我知道我可能又做错了一步,也许我在整个函数中放了一个错误的等式,什么都不起作用了,但更简单地说,我想制作一个游戏界面是桌面和时钟的游戏我在下面对其进行了编码,它无法随时间更新,我等待并尝试了我应用的许多解决方案但它们没有用,所以我将代码留在下面
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
public class DateTime : MonoBehaviour
{
public Text timeLockScreenText;
public Text dateLockScreenText;
public Text timeTaskBarText;
string time = System.DateTime.UtcNow.ToLocalTime().ToString("HH:mm");
string date = System.DateTime.UtcNow.ToLocalTime().ToString("MM-dd-yyyy");
// Update is called once per frame
void Update()
{
InvokeRepeating("DateTimeV",0f,1f);
}
public void DateTimeV()
{
timeLockScreenText.text = time;
dateLockScreenText.text = date;
timeTaskBarText.text = timeLockScreenText.text;
}
}
现在我有一些理论:
我尝试在 InvokeRepeting 中放入 Update() 函数,StartCourutine 和 IEnumerator 函数,但我没有解决方案
我对 Unity 一无所知,但似乎您在最初分配time
和date
后永远不会更新它们的值。 也许像这样的事情可以解决问题,您只需在方法中分配正确的值:
public void DateTimeV()
{
DateTime utcNow = System.DateTime.UtcNow.ToLocalTime();
timeLockScreenText.text = utcNow.ToString("HH:mm");
dateLockScreenText.text = utcNow.ToString("MM-dd-yyyy");
timeTaskBarText.text = timeLockScreenText.text;
}
使用固定更新,以及来自Rufus L
的代码:
void FixedUpdate() => DateTimeV();
public void DateTimeV()
{
DateTime utcNow = System.DateTime.UtcNow.ToLocalTime();
timeLockScreenText.text = utcNow.ToString("HH:mm");
dateLockScreenText.text = utcNow.ToString("MM-dd-yyyy");
timeTaskBarText.text = timeLockScreenText.text;
}
Rufus L所说的 + 你只会使用InvokeRepeating
一次,例如
private void Start()
{
InvokeRepeating(nameof(DateTimeV), 0f, 1f);
}
或者使用一个简单的计数器
private float timer;
private void Update ()
{
timer += Time.deltaTime;
if(timer > 1f)
{
timer -= 1f;
DateTimeV();
}
}
或协程
private IEnumerator Start()
{
while(true)
{
DateTimeV();
yield return new WaitForSeconds(1f);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.