繁体   English   中英

在Unity / C#中创建一个Speedrun计时器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM