我认为我的问题有点令人困惑,因为我不确定如何给它一个合适的标题。
无论如何,我的问题是因为我在服务器上获得当前日期而不是系统时间(或设备的时间)。我怎样才能让它像一个“时钟”?
例如:
// I have a string of date retrieved from server, let's call it as "stringFromServer"
myDate = Convert.ToDateTime(stringFromServer);
所以在上面的代码行之后,我需要myDate每秒更新一次,以便我可以随时使用它。
假设当前时间(从 myDate 获取)是09:00,在5秒后我希望它更新为09:05。
我想到的解决方案之一是在我的 Update()函数中, 我会做这样的事情:
myDate.Value.AddSeconds(deltaTime);
但我正在寻找更好的解决方案,希望我能在这里得到一些帮助。
PS:我没有使用系统时间的原因是为了防止用户更改设备设置的时间。因此,每当用户退出或重新打开应用程序时,我都必须更新myDate。
答案 0 :(得分:0)
在Unity3D中,如果您希望每X秒发生一次事件,那么这样做的好方法是使用IEnumerator函数。因此,例如,如果您想跟踪自定义时间变量,您可以拥有这样的IEnumerator:
IEnumerator UpdateServerTime()
{
while(true)
{
myDate.Value.AddSeconds(1);
yield return new WaitForSeconds(1);
}
}
此示例将继续每秒更新您的时间值1秒。正如其他用户在评论中提到的,这不是追踪时间的完美方式。但如果你想要统一追踪时间,它应该达到你想要的效果。
重要的是要记住,为了正确使用此方法,您需要像这样调用它:
StartCoroutine(UpdateServerTime());