Unity 3D c# 2个不同的循环同时成为运行

Unity 3D c# 2 different loops to be run at the same time

所以我正在创建一个非常简单的游戏,我不会说它是关于什么的,因为它是一个秘密,但我有一个名为 "rpm" 的变量,每一帧,它都会将一个对象旋转 "rpm"。但是每秒钟 rpm 将增加 0.1,我该怎么做,我尝试过使用 2 个不同的脚本,并且还在同一脚本中使用线程,但是因为我对 c# 还很陌生,所以我想知道我将如何实现这一点,任何非常感谢帮助

脚本 1

public class Rotate : MonoBehaviour
{
    public float rpm = RPM.rpm;


    // Update is called once per frame
    void Update ()
    {
        transform.Rotate(0, rpm, 0);
    }
}

脚本 2

public class RPM : MonoBehaviour
{
    public static float rpm = 0.1f;

    void Update()
    {
        System.Threading.Thread.Sleep(1000);
        rpm = rpm + 0.1f;
    }
}

所有这一切都是,不增加转速,所以它保持相同的旋转速率,但不是每帧旋转一次,而是每秒旋转一次,我不想要。

再次感谢您的帮助,如果您需要任何额外信息,请告诉我 谢谢

这里有一段代码可以完成您的要求

public class RPM : MonoBehaviour
{
    public static float rpm = 0.1f;

    private float elapsed = 0.0f;

    void Update()
    {
        elapsed += Time.deltaTime;
        if (elapsed >= 1.0f) {
            rpm = rpm + 0.1f;
            elapsed = 0.0f;
        }
    }
}

Time.deltaTime 等于自游戏最后一帧以来经过的时间(以秒为单位)。 elapsed 变量通过在每帧中添加 Time.deltaTime 来跟踪过去了多少时间。当 elapsed 时间大于 1 秒时,您的 rpm 变量会增加,elapsed 变量将重置为 0。

我建议阅读 Time 对象的不同属性。您可能最终会经常使用它。