Why my code seems skipped after singleton pattern ?

Hi, I’ve got some code on Awake -right after my singleton pattern- that is responsable for checking if we’re running a gameplay scene or a menu scene. This code goes fine in the first scene but if I’m going from a menu to a gameplay scene the Check doesn’t seem to run at all !

void Awake()
    {
        if (Instance == null)
        {
            DontDestroyOnLoad(gameObject);
            Instance = this;
        }
        else if (Instance != this)
        {
            Destroy(gameObject);
        }
        
        isGameplayScene = true;
        if (FindObjectOfType<NoGameplayScene>() != null){ // check if the scene is gameplay or menu || loading
            isGameplayScene = false;
        } else{
            isGameplayScene=true;
            Do More Stuff
        }
}

my isMenu bool stays true and isGameplayScene stays false…
What am I doing wrong ?? ^^’

Hi, line 10, when you destroy the object that is a “duplicated” singleton, the code continues to execute just after the Destroy() instruction, and I think that is where the bug is. Add a “return” just after the Destroy()! I would also use DestroyImmediate() here because you really want this object out of the scene right now. The reason is that Destroy() is delayed until the end of the frame so using DestroyImmediate() you make sure the object is not here for the rest of the current frame.

EDIT: Also, Awake() won’t be called a second time on the original singleton instance when you change scene because the original singleton instance is marked as “DontDestroyOnLoad”. So now I’m not sure that you didn’t mean to continue executing the code after calling Destroy() on a second instance. In that case, you need to set “Instance.isGameplayScene” instead of just “isGameplayScene” so you modify the singleton’s variable and not the soon-to-be-destroyed object’s one!