Воспроизведение аудиоклипов из папки «Ресурсы» - PullRequest
0 голосов
/ 19 сентября 2019

Мне нужно получить аудиоклип в папке ресурсов, так как я понимаю, что мне нужно использовать Resources.Load<AudioClip>(path) или Resources.Load(path) as AudioClip, но это просто не работает, оно даже не возвращает ноль, просто останавливает код

мой пример кода:

private void FetchAudioClipAndStartPlay(int userPos, int index)
{


    AudioClip clip = Resources.Load($"Audio/Demo_ENG/D{userPos}a") as AudioClip;
    Debug.Log("Starting Coroutine " + index);
    StartCoroutine(PlayAudioClipAndStartRetrievingFromDatabase(index, clip));
}

IEnumerator PlayAudioClipAndStartRetrievingFromDatabase(int index, AudioClip clip)
{
    Debug.Log("Starting to play " + index);
    audioSource.PlayOneShot(clip, 1f);
    yield return new WaitForSeconds(clip.length);

    if (index < numberOfPlayers)
    {
        RetrieveFromDatabase(index++);
    }
}

(не входит в сопрограмму)

enter image description here

enter image description here

Все аудиофайлы имеют формат .mp3

Любые рекомендации и советы очень ценятся!

1 Ответ

2 голосов
/ 19 сентября 2019
  1. Unity не поддерживает загрузку mp3 во время выполнения.
  2. Unity не рекомендует использовать папку Resources :

Не использовать.
Эта сильная рекомендация сделана по нескольким причинам:

  • Использование папки «Ресурсы» усложняет управление детальной памятью. Неправильное использование папок «Ресурсы» приведет к увеличению времени запуска приложения и продолжительности сборок
  • По мере увеличения количества папок ресурсов управление ресурсами в этих папках становится очень сложным
  • Система ресурсов снижает способность проекта доставлять пользовательский контент на конкретные платформы и исключает возможность постепенного обновления контента. Варианты AssetBundleявляются основным инструментом Unity для настройки контента для каждого устройства

Проверьте этот ответ для решения, как загружать аудиофайлы:

public void LoadSong()
{
    StartCoroutine(LoadSongCoroutine());    
}

IEnumerator LoadSongCoroutine()
{
    string url = string.Format("file://{0}", path); 
    WWW www = new WWW(url);
    yield return www;

    song.clip = www.GetAudioClip(false, false);
    songName =  song.clip.name;
    length = song.clip.length;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...