Optimizing Code

Hi I have some code for my game that checks what level you are on and if you are a certain level it enables the interactable component for the buttons one by one each level. I am new to programming so i was wondering if someone could help me optimize my code as i have to individually check each level in the update function at the moment
Here is my code

public class LevelManager : MonoBehaviour {
    public Click click;
    public GameObject levelholder;
    public float bargain;
    public float researchpoints;
    public float researchskill;
    public float researchlevel;
    public UpgradeManager ugpr;
    public AudioSource audio1963;
    public Button research;
    public UnityEngine.UI.Text Rlevel;
    public float rcost;
    public float baseCost;
    public UnityEngine.UI.Text Rcost;

public void Update()
    {
        Rlevel.text = "Research Level: " + researchlevel;
        Rcost.text = "Cost to research: " + rcost;
        PlayerPrefs.SetFloat("ResearchL", researchlevel);
        PlayerPrefs.SetFloat("Rcost2", rcost);
        if (researchlevel < 3f)
        {
            ugpr.item3.interactable = false;
            ugpr.item4.interactable = false;
            ugpr.item5.interactable = false;
            ugpr.item6.interactable = false;
            ugpr.item7.interactable = false;
            ugpr.item8.interactable = false;
            ugpr.item9.interactable = false;
            ugpr.item10.interactable = false;

        }
         if(researchlevel == 4f)
        {
            ugpr.item3.interactable = true;
            ugpr.item4.interactable = false;
            ugpr.item5.interactable = false;
            ugpr.item6.interactable = false;
            ugpr.item7.interactable = false;
            ugpr.item8.interactable = false;
            ugpr.item9.interactable = false;
            ugpr.item10.interactable = false;

        }
        if (researchlevel == 5f)
        {
            ugpr.item3.interactable = true;
            ugpr.item4.interactable = true;
            ugpr.item5.interactable = false;
            ugpr.item6.interactable = false;
            ugpr.item7.interactable = false;
            ugpr.item8.interactable = false;
            ugpr.item9.interactable = false;
            ugpr.item10.interactable = false;

        }
        if (researchlevel == 6f)
        {
            ugpr.item3.interactable = true;
            ugpr.item4.interactable = true;
            ugpr.item5.interactable = true;
            ugpr.item6.interactable = false;
            ugpr.item7.interactable = false;
            ugpr.item8.interactable = false;
            ugpr.item9.interactable = false;
            ugpr.item10.interactable = false;

        }
        if (researchlevel == 7f)
        {
            ugpr.item3.interactable = true;
            ugpr.item4.interactable = true;
            ugpr.item5.interactable = true;
            ugpr.item6.interactable = true;
            ugpr.item7.interactable = false;
            ugpr.item8.interactable = false;
            ugpr.item9.interactable = false;
            ugpr.item10.interactable = false;

        }
        if (researchlevel == 8f)
        {
            ugpr.item3.interactable = true;
            ugpr.item4.interactable = true;
            ugpr.item5.interactable = true;
            ugpr.item6.interactable = true;
            ugpr.item7.interactable = true;
            ugpr.item8.interactable = false;
            ugpr.item9.interactable = false;
            ugpr.item10.interactable = false;

        }
        if (researchlevel == 9f)
        {
            ugpr.item3.interactable = true;
            ugpr.item4.interactable = true;
            ugpr.item5.interactable = true;
            ugpr.item6.interactable = true;
            ugpr.item7.interactable = true;
            ugpr.item8.interactable = true;
            ugpr.item9.interactable = false;
            ugpr.item10.interactable = false;

            if (researchlevel == 10f)
            {
                ugpr.item3.interactable = true;
                ugpr.item4.interactable = true;
                ugpr.item5.interactable = true;
                ugpr.item6.interactable = true;
                ugpr.item7.interactable = true;
                ugpr.item8.interactable = true;
                ugpr.item9.interactable = true;
                ugpr.item10.interactable = false;

                if (researchlevel > 10f)
                {
                    ugpr.item3.interactable = true;
                    ugpr.item4.interactable = true;
                    ugpr.item5.interactable = true;
                    ugpr.item6.interactable = true;
                    ugpr.item7.interactable = true;
                    ugpr.item8.interactable = true;
                    ugpr.item9.interactable = true;
                    ugpr.item10.interactable = true;

                }

            }

        }

So i was wondering is there a better way to disable all buttons except for 3 when on level 4 and all buttons except for 3 and 4 when on level 5 and so on without a huge block of long code

Ok, first, careful with the bracketing, the code you posted will never go into the last branches, Unity console may even give you an “unreachable code” warning, as if research level can’t be 9 and 10 at the same time.

Anyway, You don’t want to do this in Update, you want to do this when researchlevel changes only. You can use an accessor for this, like :

private float _researchlevel;
public float researchlevel
{
    get { return _researchlevel; }
    set
    {
        if (_researchlevel != value) // if the value changed
        {
            _researchlevel = value; // update the variable
            ugpr.item3.interactable = _researchlevel != 4f; // give the conditions to each
            ugpr.item4.interactable = _researchlevel < 3f;
            ugpr.item5.interactable = _researchlevel > 4f;
            ugpr.item6.interactable = _researchlevel != 4f && _researchlevel < 7f;
            ugpr.item7.interactable = _researchlevel != 4f;
            ugpr.item8.interactable = _researchlevel == 4f;
            ugpr.item9.interactable = _researchlevel != 4f;
            ugpr.item10.interactable = _researchlevel != 4f;
        }
    }
}

I can’t see from your code what changes the researchlevel variable, but whatever did will trigger this mechanics, if you replace it with this accessor.

@UnityCoach what code would I type to assign false to the left hand side of the operator, I have looked up some c# basics and tried some code but nothing works could you give me the line of code that will return false