Prefabs won't change?

So I’m trying to make all of my prefabs to turn off their renderers and others turn into triggers, but the prefab changes but the in-game objects linked to the prefab does not. Here are some lines that are related:

public GameObject m_GreenDoor;
public GameObject m_RedDoor;
public GameObject m_GreenCube;
public GameObject m_RedCube;
void OnTriggerEnter(Collider other)
{
    //green
    if (other.gameObject.tag == "GreenCube")
    {
        m_GreenCube.GetComponent<Renderer>().enabled = false;
        m_RedCube.GetComponent<Renderer>().enabled = true;
        isGreen = true;
        ChangeColor();
    }
    //red
    if (other.gameObject.tag == "RedCube")
    {
        m_RedCube.GetComponent<Renderer>().enabled = false;
        m_GreenCube.GetComponent<Renderer>().enabled = true;
        isRed = true;
        ChangeColor();
    }
}
public void OpenDoor()
{
    if (isGreen == true)
    {
        m_GreenDoor.GetComponent<Collider>().isTrigger = false;
    }
    if (isRed == true)
    {
        m_RedDoor.GetComponent<Collider>().isTrigger = false;
    }
}

I have just realized another issue, if I collect green (turns ship green), then red (turns ship red) I can’t turn back to green. If you have some input that would be helpful.

You shouldn’t be making changes via the prefab system, that can fork up your game. Instead you should use FindWithTag or some other GameObject.find to get every instance of your prefab and then a foreach loop to iterate your changes over them.

I suspect that you actually don’t have multiple of the same instance of a prefab however, so you should just drag and drop the in-scene objects to the gameObject slots and not the root prefabs. You should only use the root prefabs when you will be instantiating it at least one time which you are not.