clip.length показывает больше секунд, чем есть сам аудиоклип

139
05 октября 2019, 13:00

Есть у меня audio которое имеет длину 1.04 минуты, т.е. 64 секунды.

Задача стояла такая: когда проиграется эта музыка два раза, идет пауза в минуту и затем начинается воспроизводиться другая музыка.

Сейчас проблема в следующем, сообщили что музыка обрывается, в итоге по замерам при старте <AudioSource>().clip.length музыка имеет длину 71.5 секунды, итерация currentIteratorClipLength должна увеличиться в момент когда музыка закончилась, дальше музыка начинается заново (стоит loop = true) и вот только на 8 секунде новой музыке срабатывает итерация, из-за этого кажется что обрыв, я не пойму почему так

void Start()
{
    _gameOnject = GameObject.Find("AudioManager/MusicContainer");
    AudioManager.Instance.PlayTrack(pointerGameplayTrack, true);
    StartCoroutine(WaitMusicPlayinsSecond());
}
private void Update()
{
    //Debug.Log(_gameOnject.GetComponent<AudioSource>().time);
    if (SceneManager.GetActiveScene().name == "Main")
    {
        if (isWaitTimer)
        {
            timerWait -= Time.deltaTime;
        }
        else
        {
            return;
        }
        if (timerWait <= 0.0f)
        { // Если все минуты исчерпались
            currentIterator++;
            if (currentIterator % 2 == 0) // итерация 1 - проигрываем новую музыку, 2 - старую
            {
                AudioManager.Instance.PlayTrack(pointerGameplayTrack, false, 1.0f);
            }
            else
            {
                AudioManager.Instance.PlayTrack(pointerGameplayTrack2, false, 1.0f);
            }
            if (GameManager.Instance.IsProfileMusicOn())
            {
                AudioManager.Instance.SetTrackMute(false); // Громкость на 1
            }
            isWaitTimer = false; // убираем зацикливание флагом
            StartCoroutine(WaitMusicPlayinsSecond());
        }
    }
}
private IEnumerator WaitMusicPlayinsSecond()
{
    YieldInstruction yi = new WaitForSeconds(_gameOnject.GetComponent<AudioSource>().clip.length);
    Debug.Log("time clip  " + _gameOnject.GetComponent<AudioSource>().clip.length);// - выдает 71.5с
    while (currentIteratorClipLength < 2)
    {
        yield return yi;
        currentIteratorClipLength++;
    }
    CheckSecondPlayingMusic();
    if (currentIteratorClipLength >= 2)
    {
        currentIteratorClipLength = 0;
    }
}

READ ALSO
Если больше людей с одного роутера заходят на сайт, превышается время ожидания ответа

Если больше людей с одного роутера заходят на сайт, превышается время ожидания ответа

Если больше людей с одного роутера заходят на сайт, превышается время ожидания ответа и как результат теряют соединение

114
preg_match, скобки и ограничитель слова?

preg_match, скобки и ограничитель слова?

Подскажите как заставить работать код?

93
SOAP afas не видит поле

SOAP afas не видит поле

могли бы вы направить на решение?

126