My code is made out of a lot of variables and if() functions. How do I make less of them/making more via unity inspector?

I am trying to make an RPG game prototype. My script basicly is detecting different collider(2d)s on different GameObjects (Interactable signs with text). But my code is… pretty bad. What I basicly need is to set my amount of the signs in the inspector, instead of just making more variables and functions like I did. What should I learn to know how to do it?

public class DialogueTrigger : MonoBehaviour
{
    [SerializeField] private GameObject sign0;
    [SerializeField] private GameObject sign1;
    [SerializeField] private GameObject sign2;
    [SerializeField] private GameObject sign3;
    [SerializeField] private bool inSign0Area;
    [SerializeField] private bool inSign1Area;
    [SerializeField] private bool inSign2Area;
    [SerializeField] private bool inSign3Area;
    public Dialogue dialogue0;
    public Dialogue dialogue1;
    public Dialogue dialogue2;
    public Dialogue dialogue3;
    public GameObject InteractionSpot;
    public DialogueManager DialogueManager;



    private void Update()
    {
        if(inSign0Area && Input.GetKeyDown(KeyCode.Space) && !DialogueManager.InCorversation)
        {
            FindObjectOfType<DialogueManager>().StartDialogue(dialogue0);
        }
        if (inSign1Area && Input.GetKeyDown(KeyCode.Space) && !DialogueManager.InCorversation)
        {
            FindObjectOfType<DialogueManager>().StartDialogue(dialogue1);
        }
        if (inSign2Area && Input.GetKeyDown(KeyCode.Space) && !DialogueManager.InCorversation)
        {
            FindObjectOfType<DialogueManager>().StartDialogue(dialogue2);
        }
        if (inSign3Area && Input.GetKeyDown(KeyCode.Space) && !DialogueManager.InCorversation)
        {
            FindObjectOfType<DialogueManager>().StartDialogue(dialogue3);
        }
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.gameObject == sign0)
        {
            inSign0Area = true;
        }
        if (collision.gameObject == sign1)
        {
            inSign1Area = true;
        }
        if (collision.gameObject == sign2)
        {
            inSign2Area = true;
        }
        if (collision.gameObject == sign3)
        {
            inSign3Area = true;
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.gameObject == sign0)
        {
            inSign0Area = false;
        }
        if (collision.gameObject == sign1)
        {
            inSign1Area = false;
        }
        if (collision.gameObject == sign2)
        {
            inSign2Area = false;
        }
        if (collision.gameObject == sign3)
        {
            inSign3Area = false;
        }

    }

}

Sigh… Use arrays and objects:

public class DialogueTrigger : MonoBehaviour
{
    [SerializeField] public SignData[] Signs;
    public GameObject InteractionSpot;
    public DialogueManager DialogueManager;

    DialogueManager manager;

    void Start()
    {
        manager = FindObjectOfType<DialogueManager>();
    }

    void Update()
    {
        foreach (var sign in Signs)
        {
            if (sign.InSignArea && Input.GetKeyDown(KeyCode.Space) && !DialogueManager.InCorversation)
            {
                manager.StartDialogue(sign.Dialogue);
            }
        }
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        foreach (var sign in Signs)
        {
            if (collision.gameObject == sign.Sign)
            {
                sign.InSignArea = true;
            }
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        foreach (var sign in Signs)
        {
            if (collision.gameObject == sign.Sign)
            {
                sign.InSignArea = false;
            }
        }
    }
}

[System.Serializable]
public class SignData
{
    public GameObject Sign;
    public bool InSignArea;
    public Dialogue Dialogue;
}

@davidborsicez