Я делаю MIDI-визуализатор, и первым инструментом, который я решил попробовать, был ковбелл. Для начала я храню список случаев, когда должен играть колокольчик (позже я займусь разбором MIDI). Затем он проверяет, прошло ли текущее время или равно времени, когда должна сыграть нота.
for (int i = 0; i < times.Length; i++) { // For each note
bool notePlayed = false;
while (!notePlayed) { // While current note hasn't been played (waiting for its time)
if (Time.timeSinceLevelLoad >= timesAdjusted [i]) { // If the current time is past or equal to the time it should play
anim.Play ("hit"); // Play animation
Debug.Log ("hit!");
notePlayed = true; // The note has been played.
}
yield return null;
}
}
Это работает, но только если время между предыдущей и текущей заметкой достаточно велико для завершения анимации. Итак, как я могу воспроизвести анимацию независимо от того, закончилась ли она?