PlayerPrefs. Load Selected Character from previous scene

Hi, so I’ve encountered a problem with my character selection.

To explain what I want to add: In main menu you can choose the character you want to play with. You click select. Then you can start the game with the character you selected in main menu, in previous scene.

What is happening: In main menu, you choose and click select the character, then you press play, another scene loads, but you play with a character you didn’t select. The default character loads. Simply the PlayerPrefs isn’t working.

I have my 8 characters stored in a parent GameObject. They are activating and deactivating as you choose them in main menu. The Same Script is also in another scene in the parent GameObject.
So, how should I load the index character from one scene to another? I’m starting to get desperate and out of ideas. I have the same spcript on the same prefab “player” as you can see on the picture. But the index isn’t choosen from the previous scene and “char1” is only active.

The Script for Character Selection:

    public GameObject[] characterList;
    public int index;
    public SmoothCamera2D myCam;

    public void Start()
    {
        index = PlayerPrefs.GetInt("CharacterSelected");

        characterList = new GameObject[transform.childCount];
        for (int i = 0; i < transform.childCount; i++)
            characterList* = transform.GetChild(i).gameObject;

        foreach (GameObject go in characterList)
            go.SetActive(false);

        if (characterList[index])
            characterList[index].SetActive(true);
    }

    public void Left()
    {
        characterList[index].SetActive(false);

        index--;
        if (index < 0)
            index = characterList.Length - 1;
        characterList[index].SetActive(true);
        myCam.target = characterList[index].transform;
    }

    public void Right()
    {
        characterList[index].SetActive(false);

        index++;
        if (index == characterList.Length)
            index = 0;
        characterList[index].SetActive(true);
        myCam.target = characterList[index].transform;
    }

    public void SelectCharacter()
    {
        PlayerPrefs.SetInt("CharacterSelected", index);
         myCam.target = characterList[index].transform;
    }

this line makes no sense:

 if (characterList[index])
     characterList[index].SetActive(true);

what are you trying to do? simply remove the if?