首页 > 解决方案 > 我想在一个事件上创建一个计时器/秒表

问题描述

我有一个运行良好的代码,但我认为如果我继续遵循相同的策略来做所有相同的事情,它会无缘无故地超载处理器

我有一个代表时间的变量,并且这个变量在游戏对象的速度高于 0.5f 的每一帧中都为 0,所以我不想在每一帧都重置它,而是在它低于 0.5f 时启动计时器

    if (speed >= 0.5f)
    {
        t = 0;
    }

    t = t + Time.deltaTime;

标签: c#unity3d

解决方案


您可以使用布尔值来节省性能。

public static bool isTimerMoving = false;

public void Update()
{
    if (speed < 0.5f)
    {
        t = t + Time.deltaTime;
        isTimerMoving = true;
    }
    else if (isTimerMoving) {
        t = 0;
        isTimerMoving = false;
    }
}

每当速度达到 时,此代码都会重置计时器0.5f。如果您只想暂停计时器,您可以从中删除t = 0

PS 使用>or<比使用<=or更快>=。不是很多,但我喜欢保持高效;)

编辑:在提出问题后,回复表明该陈述是错误的,我很抱歉。


推荐阅读