DIALOGUE SYSTEM NOT WORKING (using ink dialogue system)

hello guys… I am having a bit of trouble and my proposal of my game is due tomorrow and my problem is when I transfer from one scene to another my dialogue system is not working the error on my console the objects are being destroyed, can someone help me because this game is due only tomorrow huhu!!! ty!!!

error:

code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using Ink.Runtime;
using UnityEngine.EventSystems;

public class DialogueManager : MonoBehaviour
{
[Header(“Params”)]
[SerializeField] private float typingSpeed = 0.04f;

[Header("Dialogue UI")]
[SerializeField] private GameObject dialoguePanel;
[SerializeField] private TextMeshProUGUI dialogueText;
[SerializeField] private TextMeshProUGUI displayNameText;
[SerializeField] private Animator portraitAnimator;
private Animator layoutAnimator;

[Header("Choices UI")]
[SerializeField] private GameObject[] choices;
private TextMeshProUGUI[] choicesText;


private Story currentStory;
public bool dialogueIsPlaying { get; private set; }

private Coroutine displayLineCoroutine;
private static DialogueManager instance;

private const string SPEAKER_TAG ="speaker";
private const string PORTRAIT_TAG ="portrait";
private const string LAYOUT_TAG ="layout";


private void Awake()

{
if (instance != null)
{
Destroy(gameObject);
return;
}

instance = this;
DontDestroyOnLoad(transform.root.gameObject);

}

public static DialogueManager GetInstance()
{
    return instance;
}

private void Start() 
{
    dialogueIsPlaying = false;
    dialoguePanel.SetActive(false);

    layoutAnimator = dialoguePanel.GetComponent<Animator>();

    choicesText = new TextMeshProUGUI[choices.Length];
    int index = 0;
    foreach (GameObject choice in choices)
    {
        choicesText[index] = choice.GetComponentInChildren<TextMeshProUGUI>();
        index++;
    }
}

private void Update() 
{
   if (!dialogueIsPlaying) 
   {
    return;
   }

   if (InputManager.GetInstance().GetSubmitPressed())
   {
        ContinueStory();
   }
}

public void EnterDialogueMode(TextAsset inkJSON)
{
    currentStory = new Story(inkJSON.text);
    dialogueIsPlaying = true;
    dialoguePanel.SetActive(true);

    displayNameText.text = "???";
    portraitAnimator.Play("deafult");
    layoutAnimator.Play("right");

    ContinueStory();
}

private IEnumerator ExitDialogueMode()
{
    yield return new WaitForSeconds(0.2f);

    dialogueIsPlaying = false;
    dialoguePanel.SetActive(false);
    dialogueText.text = "";
}

private void ContinueStory()
{
      if (currentStory.canContinue)
    {
        if (displayLineCoroutine !=null)
        {
            StopCoroutine(displayLineCoroutine);
        }
        displayLineCoroutine = StartCoroutine(Displayline(currentStory.Continue()));
        DisplayChoices();
        HandleTags(currentStory.currentTags);
    }
    else
    {
        StartCoroutine(ExitDialogueMode());
    }
}

private IEnumerator Displayline(string line)
{
    dialogueText.text = "";

    foreach (char letter in line.ToCharArray())
    {
        dialogueText.text += letter;
        yield return new WaitForSeconds(typingSpeed);
    }
}


private void HandleTags(List<string> currentTags)
{
    foreach(string tag in currentTags)
    {
        string[] splitTag = tag.Split(':');
        if(splitTag.Length !=2)
        {
            Debug.LogError("Tag could not be appropriately parsed: " + tag);
        }
        string tagKey = splitTag[0].Trim();
        string tagValue = splitTag[1].Trim();

        switch (tagKey)
        {
            case SPEAKER_TAG:
                displayNameText.text = tagValue;
                break;
            case PORTRAIT_TAG:
                portraitAnimator.Play(tagValue);
                break;
            case LAYOUT_TAG:
                layoutAnimator.Play(tagValue);
                break;
            default:
            Debug.LogWarning("tag came in but is not currently being handled" + tag);
                break;
        }
    }
}

private void DisplayChoices()
{
    List<Choice> currentChoices = currentStory.currentChoices;

    if (currentChoices.Count > choices.Length)
    {
        Debug.LogError("More choices were given than the UI can support. Number of choices given: " + currentChoices.Count);
    }

    int index = 0;

    foreach(Choice choice in currentChoices)
    {
        choices[index].gameObject.SetActive(true);
        choicesText[index].text = choice.text;
        index++;
    }

    for (int i = index; i < choices.Length; i++)
    {
        choices[i].gameObject.SetActive(false);
    }

    StartCoroutine(SelectFirstChoice());
}

private IEnumerator SelectFirstChoice()
{
    EventSystem.current.SetSelectedGameObject(null);
    yield return new WaitForEndOfFrame();
    EventSystem.current.SetSelectedGameObject(choices[0].gameObject);
}

public void MakeChoice(int choiceIndex)
{
    currentStory.ChooseChoiceIndex(choiceIndex);
}

}