0

I'm creating a dialogue manager using canvas. It all works, but i want that the canvas disappear when there is no dialogue. The error appear when i collide with the hitbox of the npc, so when the dialogue starts. I have this error :

NullReferenceException: Object reference not set to an instance of an object
public class Appear : MonoBehaviour
{
    // Start is called before the first frame update

    [SerializeField] Canvas canvaschosen;
    void Update()
    {
        DialogueManager.isActive = false;
        if (DialogueManager.isActive == true)
        {
            canvaschosen.gameObject.SetActive(true);
        }

        if (DialogueManager.isActive == false)
        {
            canvaschosen.gameObject.SetActive(false);
        }
    }
}

This is where i try to show and unshow the canvas

    public void StartDialogue()
    {
        FindObjectOfType<DialogueManager>().OpenDialogue(messages, actors);
    }

Where the error is.

    Message[] currentMessages;
    Actor[] currentActors;

    public void OpenDialogue(Message[] messages, Actor[] actors)
    {
        currentMessages = messages;
        currentActors = actors;
        activeMessages = 0;

        isActive = true;

        Debug.Log("Inizio, messaggio caricato: " + messages.Length);
        Displaymessages();
    }

    void Displaymessages()
    {
        Message messagedisplay = currentMessages[activeMessages];
        messageText.text = messagedisplay.message;

        Actor actordisplay = currentActors[messagedisplay.actorID];

        actorName.text = actordisplay.name;
        actorImage.sprite = actordisplay.sprite;


    }

This is the part in dialogue manager (I dont put entire code).

Some help?

derHugo
  • 83,094
  • 9
  • 75
  • 115
Kiogra
  • 1
  • 2

0 Answers0