【发布时间】:2015-10-05 17:09:23
【问题描述】:
感谢您的寻找以及您可能获得的任何帮助/建议。
我正在尝试将音频与游戏同步。
这是一种使用 audioSettings.dspTime 找出过去了多少时间的准确方法吗?
我用一个代表时间的浮点数乘以 song.clip.frequency。
float myChosenAmountOfTimeInSamples = myChosenAmountOfTime * song.clip.frequency;
float audioSecondsLater = Audio + myChosenAmountOfTimeInSamples;
还有这个到 audioSettings.dspTime * song.clip.frequency
float Audio = (float)AudioSettings.dspTime * song.clip.frequency;
float audioSecondsLater = Audio + myChosenAmountOfTimeInSamples;
我正在使用此代码来查看它是否有效。据我所知,它会在 1 秒后发生
更新中
if (Input.GetKeyDown (KeyCode.A)){
StartCoroutine(test ());
}
还有协程
IEnumerator test ()
{
float Audio = (float)AudioSettings.dspTime * song.clip.frequency;
float myChosenAmountOfTime = 1f;
float myChosenAmountOfTimeInSamples = myChosenAmountOfTime * song.clip.frequency;
float audioSecondsLater = Audio + myChosenAmountOfTimeInSamples;
print ("Audio seconds later: " + audioSecondsLater);
while (true)
{
Audio = (float)AudioSettings.dspTime * song.clip.frequency;
if (Audio >= audioSecondsLater)
{
print ("Audio Now: " + Audio); // Theoretically this is 1 second later
break;
}
yield return new WaitForSeconds(1 / 1000f);
}
}
【问题讨论】: