C# 如何统一倒计时
在我的例子中,我目前正在进行倒计时或倒计时,但我在正确的时间做某些动作时遇到困难,主要是因为我的脚本有缺陷。我的脚本在这一点上不正确,我是这样做的,当它介于浮动和动作之间时,它会在动作和声音的某个时间之间波动C# 如何统一倒计时,c#,unity3d,C#,Unity3d,在我的例子中,我目前正在进行倒计时或倒计时,但我在正确的时间做某些动作时遇到困难,主要是因为我的脚本有缺陷。我的脚本在这一点上不正确,我是这样做的,当它介于浮动和动作之间时,它会在动作和声音的某个时间之间波动 public float timeValue; private void FixedUpdate() { timeValue += Time.deltaTime; if(timeValue > 25.2 && timeValue < 25.4
public float timeValue;
private void FixedUpdate()
{
timeValue += Time.deltaTime;
if(timeValue > 25.2 && timeValue < 25.4)
{
//Random Animation
}
if(timeValue > 26.2 && timeValue < 26.4)
{
//Sound Effect connected to Random Animation
}
}
公共浮点时间值;
私有void FixedUpdate()
{
timeValue+=Time.deltaTime;
if(timeValue>25.2&&timeValue<25.4)
{
//随机动画
}
如果(时间值>26.2和时间值<26.4)
{
//连接到随机动画的声音效果
}
}
正如您所看到的,当timeValue在这些浮动之间命中时,它会随时间而变化,因为它不会每次命中相同的浮动。我需要一个解决方案来正确地完成这一点。您使用的是物理循环的FixedUpdate(),您需要更新(),FixedUpdate()循环被定时以特定的频率运行,可能会弄乱deltaTime。您也可以使用Time.Time来获取自应用程序启动以来的总时间
private void Update()
{
timeValue += Time.deltaTime;
if(timeValue > 25.2 && timeValue < 25.4)
{
//Random Animation
}
if(timeValue > 26.2 && timeValue < 26.4)
{
//Sound Effect connected to Random Animation
}
}
private void Update()
{
timeValue+=Time.deltaTime;
if(timeValue>25.2&&timeValue<25.4)
{
//随机动画
}
如果(时间值>26.2和时间值<26.4)
{
//连接到随机动画的声音效果
}
}
您还可以使用Time.Time来获取自应用程序启动以来的总时间,从而简化代码
private void Update()
{
if(Time.time > 25.2 && Time.time < 25.4)
{
//Random Animation
}
if(Time.time > 26.2 && Time.time < 26.4)
{
//Sound Effect connected to Random Animation
}
}
private void Update()
{
如果(Time.Time>25.2&&Time.Time<25.4)
{
//随机动画
}
如果(Time.Time>26.2&&Time.Time<26.4)
{
//连接到随机动画的声音效果
}
}
除了Vansmos的答案,您还可以使用其他时间的方法,如DateTime
DateTime
具有不同的功能,以毫秒、秒、小时等为单位显示当前时间。
例如:
var timestamp = DateTime.Now.ToFileTime();
//output: 132260149842749745
这里提到了不同的方法:Time.deltaTime自动返回Update和FixedUpdate tho中的正确deltaTime