C# Unity 3d游戏开始和结束时间
我已经做了一个计时器脚本,它在游戏开始时启动计时器。这很好,现在我想要的是当我按下“CurrentTime”按钮时,当前时间应该显示在UI文本上。例如,游戏在“24:00”开始,4分钟后,当我按下“CurrentTime”按钮时,UI文本应显示“24:04。有帮助吗?这是我的代码C# Unity 3d游戏开始和结束时间,c#,unity3d,time,timer,C#,Unity3d,Time,Timer,我已经做了一个计时器脚本,它在游戏开始时启动计时器。这很好,现在我想要的是当我按下“CurrentTime”按钮时,当前时间应该显示在UI文本上。例如,游戏在“24:00”开始,4分钟后,当我按下“CurrentTime”按钮时,UI文本应显示“24:04。有帮助吗?这是我的代码 public class Timer : MonoBehaviour { public int Hours = 0; public int Minutes = 0; public Text
public class Timer : MonoBehaviour {
public int Hours = 0;
public int Minutes = 0;
public Text m_text;
private float timestart;
public Text ending;
void Awake()
{
timestart = GetInitialTime();
}
void Start () {
m_text.text = timestart.ToString();
}
private void Update()
{
if (timestart > 0f)
{
// Update countdown clock
timestart += Time.deltaTime * 0.25f;
Hours = GetLeftHours();
Minutes = GetLeftMinutes();
// Show current clock
if (timestart > 0f)
{
m_text.text = Hours + ":" + Minutes.ToString("00");
}
else
{
// The countdown clock has finished
m_text.text = "00:00";
}
}
ending.text = Hours + ":" + Minutes.ToString("00");
}
private float GetInitialTime()
{
return Hours * 60f + Minutes;
}
private int GetLeftHours()
{
return Mathf.FloorToInt(timestart / 60f);
}
private int GetLeftMinutes()
{
return Mathf.FloorToInt(timestart % 60f);
}
}
如果你真的想要当前的实时数据,它并不取决于应用程序启动的时间,而是取决于系统时间本身 那么你所需要做的就是简单地使用 您根本不需要脚本的其余部分,因为系统本身正在运行
如果你想要的是一个柜台,我会做一些简单的事情
public class Timer : MonoBehaviour
{
public Text m_text;
public float Seconds;
public int Hours;
public int Minutes;
private void Start()
{
// in case you want to start the timer automatically
StartTimer();
}
public void StartTimer()
{
StopAllCoroutines();
StartCoroutine(TimerRoutine());
}
public void StopTimer()
{
StopAllCoroutines();
GetCurrentTime();
}
private IEnumerator TimerRoutine()
{
Seconds = 0;
Hours = 0;
Minutes = 0;
while(true)
{
Seconds += Time.deltaTime;
if(Seconds >= 60)
{
Seconds -= 60.0f;
Minutes += 1;
if(Minutes >= 60)
{
Minutes -= 60;
Hours += 1;
}
}
GetCurrentTime();
yield return null;
}
}
public void GetCurrentTime()
{
m_text.text = $"{Hours:00}:{Minutes:00}:{Seconds:00}"
}
}
不,我不想要当前时间。游戏时间总是从24:00开始。简单地说,当我开始游戏时,倒计时从0开始到++。当我的车到达终点时,倒计时在5,那么计时器应该停止,ui文本应该显示“5”“@AwaisAhmed这不是你在问题中问的。。。请参阅更新的答案。我希望有帮助
public class Timer : MonoBehaviour
{
public Text m_text;
public float Seconds;
public int Hours;
public int Minutes;
private void Start()
{
// in case you want to start the timer automatically
StartTimer();
}
public void StartTimer()
{
StopAllCoroutines();
StartCoroutine(TimerRoutine());
}
public void StopTimer()
{
StopAllCoroutines();
GetCurrentTime();
}
private IEnumerator TimerRoutine()
{
Seconds = 0;
Hours = 0;
Minutes = 0;
while(true)
{
Seconds += Time.deltaTime;
if(Seconds >= 60)
{
Seconds -= 60.0f;
Minutes += 1;
if(Minutes >= 60)
{
Minutes -= 60;
Hours += 1;
}
}
GetCurrentTime();
yield return null;
}
}
public void GetCurrentTime()
{
m_text.text = $"{Hours:00}:{Minutes:00}:{Seconds:00}"
}
}