[英]create a speedrun timer in Unity / C#
我想创建一个计时器。 该计时器必须非常精确,因为它代表了速跑者的当前级别计时器。
我测试了一些方法。
使用Time.deltaTime
float currentTime = 0;
private void Update()
{
currentTime += Time.deltaTime;
}
使用Time.timeSinceLevelLoad
float startTime;
private void Start()
{
startTime = Time.timeSinceLevelLoad;
}
private void Update()
{
float currentTime = Time.timeSinceLevelLoad - startTime;
}
使用DateTime.Now
DateTime startTime;
private void Start()
{
startTime = DateTime.Now;
}
private void Update()
{
TimeSpan currentTime = DateTime.Now - startTime;
}
使用System.Diagnostics.Stopwatch
private Stopwatch watch;
private void Start()
{
watch = new Stopwatch();
watch.Start();
}
private void Update()
{
TimeSpan currentTime = watch.Elapsed;
}
哪一个最好?
最后一个解决方案似乎是最好的,但是我将currentTime
移到了class属性,以便您可以在其他地方访问它。
DateTime startTime;
public TimeSpan timeElapsed { get; private set; }
private void Start()
{
startTime = DateTime.Now;
}
private void Update()
{
this.timeElapsed= DateTime.Now - startTime;
}
或者,您可以使用StopWatch类。 这为您提供了一些可供选择的选项作为输出。 像这样:
private StopWatch stopwatch;
public TimeSpan timeElapsed { get; private set; }
private void Start()
{
stopwatch = new StopWatch();
stopwatch.Start();
}
private void Update()
{
timeElapsed = stopwatch.ElapsedMilliseconds;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.