NullReferenceException

I’ve been stuck with this for a while, I was working for a while. I stopped working after I created a script that shouldn’t have affected this one, then it wasn’t until the next day that I got the error.

NullReferenceException: Object reference not set to an instance of an object
LevelText.LevelUp (System.Int32 CurrentLevel) (at Assets/Scripts/LevelText.cs:10)
expPlace.Start () (at Assets/Scripts/expPlace.cs:34)

public class expPlace : MonoBehaviour
{
    public int ExpNeedToLevelUp;
    int baseExp = 100;
    public int CurrentExp;
    public static int CurrentLevel = 1;
    public ExpBar expBar;
    public static int LPIN; // Level Player Is On
    public static int EPH; // Exp Player Has
    public static int ENTLU; // Exp Needed To Level Up
    public LevelText levelText;
    int Exp = 100;
    void Start()
    {
        if (PlayerPrefs.HasKey("CurrentLevel"))
        {
            LPIN = PlayerPrefs.GetInt("CurrentLevel", CurrentLevel);
            CurrentLevel = LPIN;
        }
        if (PlayerPrefs.HasKey("CurrentExp"))
        {
            EPH = PlayerPrefs.GetInt("CurrentExp", CurrentExp);
            CurrentExp = EPH;
        }
        if (PlayerPrefs.HasKey("ExpNeedTolvlUp"))
        {
            ENTLU = PlayerPrefs.GetInt("ExpNeedTolvlUp", ExpNeedToLevelUp);
            ExpNeedToLevelUp = ENTLU;
        }      
        levelText.LevelUp(CurrentLevel);
        expBar.SetMinExp();
        expBar.SetMaxExp(ExpNeedToLevelUp);
        expBar.SetExp(CurrentExp);
    }
    public void GainExp()
    {
        {   
            CurrentExp += Exp;
            expBar.SetExp(CurrentExp);
   
            if (CurrentExp >= ExpNeedToLevelUp)
            {
                CurrentLevel++;
                nextLevel();
                expBar.LevelUppy();
            }
        }
    }
    void nextLevel()
    {
        ExpNeedToLevelUp = baseExp * CurrentLevel;
        CurrentExp = 0;
        expBar.SetMaxExp(ExpNeedToLevelUp);
        levelText.LevelUp(CurrentLevel);
    }
    void OnDisable()
    {
        PlayerPrefs.SetInt("CurrentLevel", CurrentLevel);
        PlayerPrefs.SetInt("CurrentExp", CurrentExp);
        PlayerPrefs.SetInt("ExpNeedTolvlUp", ExpNeedToLevelUp);
    }
}

Tragic! This should be fixable in seconds, and it absolutely NEVER requires a forum post.

The answer is always the same… ALWAYS. It is the single most common error ever.

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

  • 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

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

The basic steps outlined above are:

  • Identify what is null
  • Identify why it is null
  • 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:

https://discussions.unity.com/t/814091/4

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

Here is a clean analogy of the actual underlying problem of a null reference exception:

https://discussions.unity.com/t/840647/7

And to give you a hint, the script you posted isn’t where the error is. Follow your stacktrace.
LevelText.LevelUp (System.Int32 CurrentLevel) (at Assets/Scripts/LevelText.cs:10)