I wanted to have an option to choose from 5 music tracks played in background. And mainly I did this. Here’s what’s going on:
- Music starts playing when game is started
- When I go to options screen, where I choose music track, it stops playing
- I choose different track (I’m still in options screen), and it’s silent still
- When I go back to start screen it plays this different track, and it’s played throughout the game
Here are the scripts:
MusicPlayer.cs - declared variables
public static int musicTrackInt = 0;
public static string[] musicTracks = {"1", "2", "3", "4", "5"};
public AudioClip bgMusic1;
public AudioClip bgMusic2;
public AudioClip bgMusic3;
public AudioClip bgMusic4;
public AudioClip bgMusic5;
public AudioSource bgMusic;
There are music files attached to audioclips in inspector.
MusicPlayer.cs - Start function
void Start ()
{
StartAudioVolumes(); //irrelevant in this case
bgMusic = GetComponent<AudioSource>();
bgMusic.clip = bgMusic1;
bgMusic.Play();
}
MusicPlayer.cs - MusicTrackSelection function
public void MusicTrackSelection()
{
switch(musicTrackInt)
{
case 0:
bgMusic.clip = bgMusic1;
bgMusic.Play();
break;
case 1:
bgMusic.clip = bgMusic2;
bgMusic.Play();
break;
case 2:
bgMusic.clip = bgMusic3;
bgMusic.Play();
break;
case 3:
bgMusic.clip = bgMusic4;
bgMusic.Play();
break;
case 4:
bgMusic.clip = bgMusic5;
bgMusic.Play();
break;
}
}
OptionsScreen.cs - declared variables
private MusicPlayer musicPlayer;
OptionsScreen.cs - Start function
void Start ()
{
musicPlayer = GameObject.FindObjectOfType<MusicPlayer>();
OptionsArea (); //irrelevant in this case
}
OptionsScreen.cs - OnGui function
MusicPlayer.musicTrackInt = GUI.Toolbar (new Rect(musicTrackToolbar), MusicPlayer.musicTrackInt, MusicPlayer.musicTracks, "Options Toolbars");
musicPlayer.MusicTrackSelection();
I don’t know why music stops playing when on options screen. I must have missed something, I suppose it’s a logic mistake. Thanks in advance.