Как создать объект в Unity 3D, который остается в кадре и не воссоздает - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь найти хороший способ воспроизведения фоновой музыки в Unity 3D. Я хочу, чтобы музыка продолжала играть последовательно в течение всей сцены. Не разрушайте при загрузке - это нормально и работает, но каждый раз, когда я загружаю одну и ту же сцену, она создает другой музыкальный игровой объект, потому что сама сцена содержит игровой объект. Как я могу решить мою проблему? Я «новичок» (вроде), поэтому мне нужен код, который я могу понять.

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Я рекомендую создать объект audioSource, затем создать скрипт для этого объекта и в функции пробуждения сделать это:

void Awake() {
    DontDestroyOnLoad(this.gameObject);
}

Это заставит фоновую музыку продолжать играть между сценами. Для получения дополнительной информации вы можете использовать документацию Unity о этой функции .

0 голосов
/ 12 сентября 2018

С помощью вопроса на форуме Unity я думаю, что решил свою проблему. Ссылка на вопрос здесь ...

https://answers.unity.com/questions/982403/how-to-not-duplicate-game-objects-on-dontdestroyon.html

Лучший ответ - тот, который я использую.

Код такой ...

private static Player playerInstance;

void Awake(){
    DontDestroyOnLoad(this);

    if (playerInstance == null) {
        playerInstance = this;
    } else {
        Destroy(gameObject); // Used Destroy instead of DestroyObject
    }
}
0 голосов
/ 12 сентября 2018

Я бы порекомендовал начать с актива, такого как EazySoundManagerDemo.Он нуждается в небольшом рефакторинге и уточнении (т.е. он использует 3 массива аудио с 3 наборами функций доступности вместо одного набора с перечислением AudioPurpose для увеличения повторного использования кода).

Это, однако, решает основную проблему, которую выиметь и является хорошим введением в использование менеджера аудио / слоя вместо простого воспроизведения аудио непосредственно из ваших GameObjects.Сделайте это, изучите его, а затем адаптируйте его или создайте собственный слой управления звуком.

Удачи!

...