Unity randomly breaks

hey i am trying to create a diolog system it work for first time but then break and error at line 30 :
sentences.Clear();

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

public class diolog : MonoBehaviour
{

    public TextMeshProUGUI nameText;
    public TextMeshProUGUI dialogueText;



    private Queue<string> sentences;

    // Use this for initialization
    void Start()
    {
        sentences = new Queue<string>();
    }

    public void startD(diologg dialogue)
    {
       

        nameText.text = dialogue.name;

        sentences.Clear();

        foreach (string sentence in dialogue.sentenses)
        {
            sentences.Enqueue(sentence);
        }

        DisplayNextSentence();
    }

    public void DisplayNextSentence()
    {
        if (sentences.Count == 0)
        {
            EndDialogue();
            return;
        }

        string sentence = sentences.Dequeue();
        StopAllCoroutines();
        StartCoroutine(TypeSentence(sentence));
    }

    IEnumerator TypeSentence(string sentence)
    {
        dialogueText.text = "";
        foreach (char letter in sentence.ToCharArray())
        {
            dialogueText.text += letter;
            yield return new WaitForSeconds(0.025f);

        }
    }

    void EndDialogue()
    {
        SceneManager.LoadScene("SampleScene");   
    }

}

Not well versed in this but you initialize sentences in start, why not do that instead of use Clear if clear is causing the error?

Doing it only at start instead of when it’s used probably causes the error?

You should post the actual error log you get.

Since you gave no indication of the error, and since startD() is a public function, I’m gonna guess you are getting a NullReferenceException.

NullReference is the single most common error while programming. Fixing it is always the same.

  • also known as: Unassigned Reference Exception
  • also known as: Missing Reference Exception
  • also known as: Object reference not set to an instance of an object

Don’t waste your life spinning around and round on this error. Instead, learn how to fix it fast… it’s EASY!!

Some notes on how to fix a NullReferenceException error in Unity3D:

http://plbm.com/?p=221

The basic 3 steps outlined above are:

  1. Identify what is null ← any other action taken before this step is WASTED TIME
  2. Identify why it is null
  3. Fix that.

Expect to see this error a LOT. It’s easily the most common thing to do when working. Learn how to fix it rapidly. It’s easy. See the above link for more tips.

You need to figure out HOW that variable is supposed to get its initial value. There are many ways in Unity. In order of likelihood, it might be ONE of the following:

  • drag it in using the inspector
  • code inside this script initializes it
  • some OTHER external code initializes it
  • ? something else?

This is the kind of mindset and thinking process you need to bring to this problem:

Step by step, break it down, find the problem.

Here is an analogy of a null reference:

  • I give you an empty cookie jar
  • I tell you to take a cookie from the jar

Your job is to identify which jar is empty, find out why it is empty, and fix that.

I believe your are calling “StartD” before the “Start” method of your script, causing to find sentences equal to null.

What you are doing in start (the initialization of the Queue) can be done also right when declaring the attribute at line 16; or you can do it in Awake. This way, StartD will call “sentences.Clear()” on an empty (but initialized) Queue.

Let me know!

Hey thanks for quick response , i am currently not home but i will put the full log plus the full description when i get back
I forgot to put it in orginal description

Hi thanks for quick response it was a null refrense as you said too
Thanks for your guild

Hi, thanks for quick reaponse I am calling it at the same time as start ( in another start function ) i will test calling it in a courotin and see will it work

As sacBoy said above, if you’re just clearing it, why not just reinitialize it there too? Don’t reach for coroutines unless you truly need them.

Dialog systems are some of the hardest things you can attempt. Here’s some reading:

Dialog system fundamentals and structure:

There are also some free packages you could start from:

Fungus: https://fungusgames.com

Inkle: https://www.inklestudios.com

A free Ink-Fungus gateway product:

Even if you don’t end up using either of those, you could review them for structure because it is almost certain that they have already solved all the same problems you are trying to solve.

Ok thanks for your response

thanks for every one replys i have solved it using your guilds