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 对象的不同属性。您可能最终会经常使用它。
所以我正在创建一个非常简单的游戏,我不会说它是关于什么的,因为它是一个秘密,但我有一个名为 "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 对象的不同属性。您可能最终会经常使用它。