SetActive() not working

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class StarManager: MonoBehaviour
{
    private static bool playerExits;
    private bool thisPlayerIsTheReal;

    [SerializeField] int highscoreLevel1;
    [SerializeField] int level1;

    GameObject timer;

    [SerializeField] GameObject level1Stars;
    [SerializeField] GameObject level1Star1;
    [SerializeField] GameObject level1Star2;
    [SerializeField] GameObject level1Star3;


    private void Start()
    {
        level1Stars = GameObject.FindGameObjectWithTag("StarsLevel1");
        level1Star1 = level1Stars.transform.GetChild(0).gameObject;
        level1Star2 = level1Stars.transform.GetChild(1).gameObject;
        level1Star3 = level1Stars.transform.GetChild(2).gameObject;

        level1Star1.SetActive(false);
        level1Star2.SetActive(false);
        level1Star3.SetActive(false);

        DontDestroyOnLoad(gameObject);
    }

    private void Awake()
    {
        if (!playerExits)
        {
            playerExits = true;
            thisPlayerIsTheReal = true;
            DontDestroyOnLoad(gameObject.transform);
        }
        else if (playerExits && !thisPlayerIsTheReal)
        {
            Destroy(gameObject);
        }
    }

    private void OnLevelWasLoaded(int level)
    {
        level1Stars = GameObject.FindGameObjectWithTag("StarsLevel1");
        level1Star1 = level1Stars.transform.GetChild(0).gameObject;
        level1Star2 = level1Stars.transform.GetChild(1).gameObject;
        level1Star3 = level1Stars.transform.GetChild(2).gameObject;
        if (SceneManager.GetActiveScene().buildIndex == 0)
        {
            StarsSetActive();
        }
    }

    public void StarsUpdate()
    {
        timer = GameObject.Find("Canvas/Timer");
        if (timer.GetComponent<Timer>().stars == 3)
        {
            if (SceneManager.GetActiveScene().buildIndex == 1)
            {
                level1 = 3;
            }
        }

        if (timer.GetComponent<Timer>().stars == 2)
        {
            if (SceneManager.GetActiveScene().buildIndex == 1)
            {
                level1 = 2;
            }
        }

        if (timer.GetComponent<Timer>().stars == 1)
        {
            if (SceneManager.GetActiveScene().buildIndex == 1)
            {
                level1 = 1;
            }
        }
    }

    private void StarsSetActive()
    {
        level1Star1.SetActive(false);
        level1Star2.SetActive(false);
        level1Star3.SetActive(false);

        if (level1 > highscoreLevel1)
        {
            highscoreLevel1 = level1;
        }
        if (highscoreLevel1 == 1)
        {
            level1Star1.SetActive(true);
        }
        if (highscoreLevel1 == 2)
        {
            level1Star1.SetActive(true);
            level1Star2.SetActive(true);
        }
        if (highscoreLevel1 == 3)
        {
            Debug.Log("highScoreLevel1  == 3 ");
            level1Star1.SetActive(true);
            level1Star2.SetActive(true);
            level1Star3.SetActive(true);
        }
    }
}

The problem is that on line 110 the Debug.Log works, but the SetActive’s don’t work. Everything above that works and I’m not getting any errors. Would love to be helped.

Is their parent Active? If the parent is not active, they will not become active themselves.

Also, OnLevelWasLoaded was made Obsolete years ago, you shouldn’t be using it. Try SceneManger.activeSceneChanged or SceneManager.sceneLoaded.

Thank you so much, I’ve been trying to fix this for a long time. I just added SceneManager.activeSceneChanged and it worked. I want to do this for more levels but that is going to be a lot of code.Do you maybe know a shorter way of doing this. Again thank you.

You want to learn about collections, eg List and array types.