Hi everyone,
I am using Unity 2017 and I am attempting not to use LoadLevel and OnLevelWasLoaded because they are marked as obsolete. I manged to create my own Level Manager game objects and scripts with the usage of SceneManager.
I am trying to create my Music Manager/Music Payer script using SceneManager as well. So far I managed to get it working for the Splash Scene, but whenever I move to Main Menu scene there is no music (even though the logs correctly state the number of a Scene after load).
I know that the easiest way to make it work would be to manually assign AudioClips and use ‘if’, but I would rather have a flexible script that could be used throughout my future project with ease.
Here is the code that I have so far:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class MusicPlayerScript : MonoBehaviour {
public AudioClip[] MusicPerSceneArray;
private AudioSource audioSource;
private int NewMusicSceneNumber;
private void OnEnable ()
{
DontDestroyOnLoad(gameObject);
NewMusicSceneNumber = SceneManager.GetActiveScene().buildIndex;
Debug.Log("SplashSceneNumber: " + NewMusicSceneNumber);
audioSource = GetComponent<AudioSource>();
SceneManager.sceneLoaded += NewSceneLoaded;
ChangeMusicBasedOnSceneNumberAndArray();
}
void NewSceneLoaded(Scene scene, LoadSceneMode mode)
{
NewMusicSceneNumber = scene.buildIndex;
Debug.Log("NewMusicSceneNumber: " + NewMusicSceneNumber);
mode = LoadSceneMode.Single;
}
private void ChangeMusicBasedOnSceneNumberAndArray()
{
PlayMethod();
audioSource.Play();
if (NewMusicSceneNumber == 0)
{
audioSource.loop = false;
}
else
{
audioSource.loop = true;
}
}
private void PlayMethod()
{
audioSource.clip = MusicPerSceneArray[NewMusicSceneNumber];
}
}
I would appreciate any help from you guys. It has been hours now and I have no solution to my problem.
Thanks,
Damian