GameObject.SetActive seems to be disabling an object before it should?

This code gives a null reference exception. Notice the .SetActive false.

    void SwampButtons () {
        gameHUD = GameObject.Find ("GameHUD");
        pauseMenu = GameObject.Find ("PauseMenu");
        optionsMenu = GameObject.Find ("OptionsMenu");
        gameHUD.SetActive (true);
        pauseMenu.SetActive (false);
        optionsMenu.SetActive (false);
    }

Whereas this code, with .SetActive true does not.

    void SwampButtons () {
        gameHUD = GameObject.Find ("GameHUD");
        pauseMenu = GameObject.Find ("PauseMenu");
        optionsMenu = GameObject.Find ("OptionsMenu");
        gameHUD.SetActive (true);
        pauseMenu.SetActive (true);
        optionsMenu.SetActive (true);
    }

I think the object is being set inactive before the variable is assigned. Why would the object be set inactive first if it is underneath the variable assignment?

I don’t know your goal but I would choose this method ;
define some game object variables first ( for options menu and pause menu ) . select these menus from your scene in the editor . set these menus’ SetActive states at void Start() - (false) . and you can make them true wherever you wan’t in your script.

public GameObject pauseMenu;
public GameObject optionsMenu;

void Start()
{
pauseMenu.SetActive(false);
optionsMenu.SetActive(false);
}

void SwampButtons ()
{
pauseMenu.SetActive(true);
optionsMenu.SetActive(true);
}