Prevent sound event to be played if it is already playing

In Unity:

Scene A:
A loop sound event “music” is playing at start up (Event Emitter - Object Start).
Scene B:
The same loop sound event “music” is playing at start up (Event Emitter - Object Start).

If I switch from Scene A to Scene B:
I want to prevent the “music” sound event in Scene B to be played as it is already playing from Scene A.
But, if I switch from Scene C (no such sound) to Scene B:
I want to play the “music” sound event.

Any thoughts ?

I tried to detect if the the music instance is playing (c.f. below).
The method is working, but only while staying in Scene A.
The moment I switch to Scene B, I no longer get the state of the instance.

public class AudioInstance : MonoBehaviour

private FMODUnity.StudioEventEmitter emitter;

public static bool IsPlaying(FMOD.Studio.EventInstance instance)
instance.getPlaybackState(out state);
return state != FMOD.Studio.PLAYBACK_STATE.STOPPED;

void Update()
    if (emitter.IsPlaying())
      Debug.Log("Emitter is playing");
    else if (!emitter.IsPlaying())
      Debug.Log("Emitter is not playing");


It sounds like the issue is that your gameObject holds your event emitter component that exists in Scene A is destroyed when the scene ends at you transition.

When I create music managers to play across different scenes, I use the DontDestroyOnLoad() function inside the the Awake callback like this:

private void Awake()

That way, the gameObject instance that I’m referencing that controls the music is not released from memory when I change scenes and I can continue using that same instance.

Another approach might be to set the max instances of the Event in Studio to one, with the stealing mode to none. That way if the Event isn’t playing it will start, if it is playing the new instance won’t start.

Thank you both for your answers.
Max instance set to 1 and stealing set to none worked right away.