流畅,快速的协同程序?

时间:2019-01-17 00:46:11

标签: c# unity3d

所以我的一堆协程在我的游戏中运行良好/正常工作。

但是,其中之一是功率计,这是问题所在...

按下按钮,功率计将使用协程开始填充功率计。 (以红色面板的宽度表示)

目标是使电表充满得足够快,以防止每次都无法获得“全功率”。但是,它也必须光滑,并且看起来不错。

我面临的问题是我的协程在速度上已尽力而为,并且不能更快地运行,并且仪表移动得太慢。因此,要“加快”仪表的速度,我必须在红色面板上使用较大的宽度递增增量。

它有效,但是,这会导致2个问题。

  1. 它看起来不平滑。 (看起来断断续续和紧张不安)
  2. 它错过了一堆价值/可能性。 (例如,酒吧必须以“ 50”为单位增加速度,以使其足够困难以至于困难。但这是愚蠢的,因为在停止电表时只有12种可能性。最多可能有600种!)

以前有人遇到过吗?如果是这样,那么制造快速而平稳的功率计的最佳方法是什么,那么仍然可以实现各种价值选择?

谢谢, 本

这是我的代码:

public static IEnumerator StartPitchMeter(Player.Guy guy, float duration)
{

    var dur = 0.01f;

    do
    {
        yield return new WaitForSeconds(dur);

        PlayerControls.PitchMeter += 50f;

        if (PlayerControls.PitchMeter > 600) PlayerControls.PitchMeter = 0f;

        PlayerControls.pitchMeter.sizeDelta = new Vector2(PlayerControls.PitchMeter, 50);

    } while (!PlayerControls.stopPitch);

}

1 个答案:

答案 0 :(得分:1)

如果您使用协程为图形目的更新某些内容,则希望在每个可用的渲染帧上进行更新(与调用$(".message").off()方法的频率相同)。因此,不用等待经过指定的时间,而使用Update,然后根据yield return null移动仪表,这是自上一帧以来经过的时间(以秒为单位)。在这种情况下,您可以将Time.deltaTime乘以您希望仪表填充的每秒多少个单位:

Time.deltaTime