Iam trying to load my "PlayerHealth" Script to my "GameOverManager" to check my currentHealth from the PlayerHealth-Script.
If the current health is "0" - I want to trigger an animation.
The problem is, that Unity gives me an error with following message:
"NullReferenceException: Object reference not set to an instance of an object GameOverManager.Update () (at Assets/GameOverManager.cs:32)"
Here is the piece of Code of my GameOverManager:
public class GameOverManager : MonoBehaviour {
    public PlayerHealth playerHealthScript;
    public float restartDelay = 5f;
    Animator anim;
    float restartTimer;
    private void Awake()
    {
        anim = GetComponent<Animator>();
    }
    private void Update()
    {
        playerHealthScript = GetComponent<PlayerHealth>();
        if (playerHealthScript.currentHealth <= 0) {
            anim.SetTrigger("GamerOver");
            restartTimer += Time.deltaTime;
            if (restartTimer >= restartDelay) {
                SceneManager.LoadScene(2);
            }
        }       
    }
}
The error is triggered on the following line:
if (playerHealthScript.currentHealth <= 0)
Here is the hierarchy - FPSController holds "PlayerHealth" - HUDCanvas holds "GameOverManager:
Here are the inspectors:
Here is the code of "PlayerHealth":
  using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.SceneManagement;
public class PlayerHealth : MonoBehaviour
{
    public int startingHealth = 100;                            // The amount of health the player starts the game with.
    public int currentHealth;                                   // The current health the player has.
    public Slider healthSlider;                                 // Reference to the UI's health bar.
    public Image damageImage;                                   // Reference to an image to flash on the screen on being hurt.
    public AudioClip deathClip;                                 // The audio clip to play when the player dies.
    public float flashSpeed = 5f;                               // The speed the damageImage will fade at.
    public Color flashColour = new Color(1f, 0f, 0f, 0.1f);     // The colour the damageImage is set to, to flash.
    public float restartDelay = 5f;
   //Animator anim;                                              // Reference to the Animator component.
    public AudioSource playerAudio;                                    // Reference to the AudioSource component.
  //  PlayerMovement playerMovement;                              // Reference to the player's movement.
  //  PlayerShooting playerShooting;                              // Reference to the PlayerShooting script.
    bool isDead;                                                // Whether the player is dead.
    bool damaged;                                               // True when the player gets damaged.
void Awake()
{
    // Setting up the references.
  //  anim = GetComponent<Animator>();
 //   playerAudio = GetComponent<AudioSource>();
//    playerMovement = GetComponent<PlayerMovement>();
//    playerShooting = GetComponentInChildren<PlayerShooting>();
    // Set the initial health of the player.
    currentHealth = startingHealth;
}
void Update()
{
    // If the player has just been damaged...
    if (damaged)
    {
        // ... set the colour of the damageImage to the flash colour.
       damageImage.color = flashColour;
    }
    // Otherwise...
    else
    {
        // ... transition the colour back to clear.
       damageImage.color = Color.Lerp(damageImage.color, Color.clear, flashSpeed * Time.deltaTime);
    }
    // Reset the damaged flag.
    damaged = false;
    }
public void TakeDamage(int amount)
{
    // Set the damaged flag so the screen will flash.
    damaged = true;
    // Reduce the current health by the damage amount.
    currentHealth -= amount;
    playerAudio.Play();
    Debug.Log("PLayer Health: " + currentHealth);
    // Set the health bar's value to the current health.
    healthSlider.value = currentHealth;
    // Play the hurt sound
    playerAudio.Play();
    // If the player has lost all it's health and the death flag hasn't been set yet...
    if (currentHealth <= 0 && !isDead)
    {
        // ... it should die.
        Death();
    }
}
void Death()
{
    // Set the death flag so this function won't be called again.
    isDead = true;
    Debug.Log("In der Death Funktion");



 
    