在將 C#/Unity 與一個小倒數計時器結合使用時,我遇到了一個小問題。只要總 timeToDisplay 的數量不是太大(例如超過一天),倒計時就可以正常作業
r/Unity2D - 尋求幫助:當剩余時間過多時,倒計時奇怪地停止如您所見,用戶可以為該倒計時添加時間,這(再次)作業正常,直到它太多。
使用 TextMeshPro 和 TextMeshPro-Buttons。
倒計時影像 添加秒/分鐘/小時/天的按鈕
但是......這是代碼:
using UnityEngine;
using TMPro;
public class Controller : MonoBehaviour
{
public float timeValue = 78000;
public TMP_Text timerText;
// I also tried FixedUpdate, but error still occured
void Update()
{
if (timeValue > 0)
{
timeValue -= Time.deltaTime;
}
else
{
timeValue = 0;
}
DisplayTime(timeValue);
}
void DisplayTime(float timeToDisplay)
{
float days = Mathf.FloorToInt(timeToDisplay / 86400);
timeToDisplay = timeToDisplay % 86400;
float hours = Mathf.FloorToInt(timeToDisplay / 3600);
timeToDisplay = timeToDisplay % 3600;
float minutes = Mathf.FloorToInt(timeToDisplay / 60);
timeToDisplay = timeToDisplay % 60;
float seconds = Mathf.FloorToInt(timeToDisplay);
if (seconds < 0)
{
seconds = 0;
}
timerText.text = string.Format("{0:00} days {1:00} hours {2:00} minutes {3:00} seconds", days, hours, minutes, seconds);
}
public void AddDay()
{
/* 86400 seconds/day */
timeValue = 86400;
}
public void AddHour()
{
/* 3600 seconds/hour */
timeValue = 3600;
}
public void AddMinute()
{
timeValue = 60;
}
public void AddSecond()
{
timeValue = 1;
}
}
有人知道我在這里想念什么嗎?
uj5u.com熱心網友回復:
這里的問題:timeValue -= Time.deltaTime,浮動有一點偏差
public float timeValue = 78000;
float beginTime = 0;
void Start()
{
beginTime = Time.time;
}
// I also tried FixedUpdate, but error still occured
void Update()
{
float usedTime = Time.time - beginTime;
if( timeValue - usedTime > 0 )
{
DisplayTime(timeValue - usedTime);
}
else
{
DisplayTime(0);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457469.html
上一篇:C#無效的運算式術語' ='
