C# Script and Health Bar (Ruby Adventure 2D)

After Adding the Health Bar of Ruby and done scripting both Ruby Controller and UIHealthBar,
I start the game and when I hit the enemy it doesn’t collide (before that it collides) and if I stand in the damage zone the game freeze and comes out with this error.

I uploaded two pictures one from the unity editor and the other of the Damage zone script

7433933--910760--upload_2021-8-20_9-20-59.png7433933--910763--upload_2021-8-20_9-23-49.png

The code you posted has no issues. Seems like something within the controller isn’t set correctly within the editor. The error is on line 89 of the RubyController script so something in there isn’t being set.

Check the player object in the editor to see if something isn’t set up within the RubyController component.

line89 = UIHealthBar.instance.SetValue(currentHealth / (float) maxHealth);

I’ve copied it from the tutorial and still got the error

7434107--910796--upload_2021-8-20_11-3-24.png

Copying code is only a tiny fraction of the issue. You have to set it up.

Thankfully, for the error you report, it does not even remotely matter what you are doing.

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

1 Like

I’ve found where is my error as I don’t put the script back in the Inspector
Thanks for replying and for the analysis
you Lighten me up with some extra work I need to do with C# as I’m still a beginner and trying to learn and understand how to write and understand the code.

1 Like

You need to assign the C# script to the Game Object inside unity editor