Задать вопрос
@Em4ik

Как сделать одну и ту же музыку на разных сценах Unity?

Мне нужно, чтобы одна и та же музыка, продолжаясь, играла на сцене меню и сцене настроек. Для этого я в скрипте кнопки перехода между сценами добавил DontDestroyOnLoad. Музыка продолжала играть в другой сцене, но при переходе обратно на первую добавлялась еще одна музыка, которая играла с начала. Я пробовал добавить проверку на наличие игрового объекта и его удаление при обнаружении, но удалялась та музыка, которая уже играла, поэтому она опять проигрывалась с начала. Помогите разобраться, я новичок и пока что плохо владею c#.
public class SettingsGameScript : MonoBehaviour
{
    public GameObject MenuMusic;
    public void SettingsOpen()
    {
        SceneManager.LoadScene("Settings");
        DontDestroyOnLoad(MenuMusic);
    }
}
  • Вопрос задан
  • 361 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@xcv0
Добавьте там где Вы впервые запускаете трек, переменную bool, и если она не равна True(Музыка не запущена), то запускайте музыку, если нет то не запускайите
Пример:
private bool _musicIsLoad = false;

private void Start()
{
    if (!_musicIsLoad)
    {
        //тут код по которому Вы запускаете музыку
        _musicIsLoad = true;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Colden_I
У меня получилось вот такое решение:

public class AudioFon : MonoBehaviour
{
    private AudioSource m_Source;
    private static AudioFon af = null;

    private void Awake()
    {
        if (af == null) af = this;
        else Destroy(gameObject);

        DontDestroyOnLoad(gameObject);
        m_Source = GetComponent<AudioSource>();       
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы