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

时间:2018-10-01 19:01:03

标签: c# loops unity3d void

因此,我正在创建一个非常简单的游戏,因为它是一个秘密,所以不愿透露它的含义,但是我有一个名为“ 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;
    }
}

所有这些操作是,不增加rpm,因此它保持相同的旋转速率,但不是每帧旋转一次,而是每秒旋转一次,我不想。

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

1 个答案:

答案 0 :(得分:2)

这是一段代码,可以满足您的要求

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 等于自游戏最后一帧以来经过的时间(以秒为单位)。只需通过在每帧中添加Time.deltaTime,经过的变量就可以跟踪经过了多少时间。当经过的时间大于1秒时,您的rpm变量将增加,并且经过的变量将重置为0。

我建议阅读有关Time对象的不同属性。您可能最终会大量使用它。