Unity, продолжайте проигрывать музыку в разных сценах

#unity3d

#unity3d

Вопрос:

Итак, я осматривался, и, похоже, ни одно решение не работает для меня…

Я хочу воспроизвести фоновую музыку во всех сценах без сброса звука.

У меня есть сборный файл с источником звука и scritp.

скрипт выполняет:

     private void Awake()
    {
        GameObject[] objs = GameObject.FindGameObjectsWithTag("BGAudio");
        if (objs.Length > 1)
            Destroy(this.gameObject);

        DontDestroyOnLoad(this.gameObject);
        
    }
 

Итак, я также пометил сборку, BGAudio но когда я меняю сцену, она останавливает музыку. Если я добавлю сборку к обеим сценам, она начинается с 0..

Я пытался также использовать синглтон, но это тоже не работает.

Я использую unity 2019 Я использую сборку Android, которая, я думаю, ничего не меняет, но на всякий случай.

Ответ №1:

Только что обнаружил, что DontDestroyOnLoad это работает только для объектов в корне. Пока мой Bgsound был внутри bg пустого объекта.

Ответ №2:

Вы также можете создать совершенно новую сцену, которая включает только ваш объект BGAudio. Загрузите как сцену BGAudio, так и сцену воспроизведения в качестве дополнения.

Например: создайте сцену BGSound. Затем создайте пустой gameobject с именем BGSoundManager. Также создайте свой объект BGSound. Затем добавьте скрипт BGSoundManager в ваш игровой объект BGSoundManager и отредактируйте его следующим образом :

 private IEnumerator Start()
{
    yield return SceneManager.LoadSceneAsync("BGSound", LoadSceneMode.Additive);
    yield return SceneManager.LoadSceneAsync("Level1", LoadSceneMode.Additive);
    Destroy(gameObject);
}