Does anyone know why im getting this error?
Object reference not set to an instance of an object HealthBar.TakeDamage (System.Int32 damage) (at Assets/Scripts/HealthBar.cs:61) HealthBar.Update () (at Assets/Scripts/HealthBar.cs:36)
the code seems to work as intended when i try to run "TakeDamage()" but i recieve that error after it executes even though its giving me the correct behavior.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class HealthBar : MonoBehaviour
{
    public CharacterStats stats;
    public Slider slider;
    
    // Start is called before the first frame update
    void Start()
    {
        slider.value = slider.maxValue;
    }
    // Updates the Current Hp Text
    public Text valueText;
    public void OnSliderChanged(float value)
    {
        valueText.text = value.ToString();
    }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            HealDamage(30);
            Debug.Log("Space");
        }
        if (Input.GetKeyDown(KeyCode.E))
        {
            TakeDamage(10);
            Debug.Log("E");
        }
        if (Input.GetKeyDown(KeyCode.Q))
        {
            TempMaxHealth(5f,20);
            Debug.Log("Q");
        }
        if (Input.GetKeyDown(KeyCode.T))
        {
            SetHealth(20);
            Debug.Log("T");
        }
        if (Input.GetKeyDown(KeyCode.P))
        {
            PoisonDamage(2f,10);
            Debug.Log("P");
        }
    }
    // Take X amount of Damage 
    void TakeDamage(int damage)
    {
        if (stats.Armor.GetValue() <= damage) { 
            damage -= stats.Armor.GetValue();
            damage = Mathf.Clamp(damage, 0, int.MaxValue);
            slider.value -= damage;
        }
        if (slider.value <= 0)
        {
            Dead();
        }
    }
    // Death Status
    void Dead()
    {
        Debug.Log("You Are Dead");
        //filler for death scene
    }
    // Heal X amount of Damage
    void HealDamage(int damage)
    {
        if (slider.value < slider.maxValue)
        {
            slider.value += damage;
        }
    }
    // Set Max Health Permanently
    public void SetMaxHealth(int health)
    {
        slider.maxValue = health;
    }
    // Set Current Health
    public void SetHealth(int health)
    {
        slider.value = health;
    }
    // Increase MaxHealthPermanently
    public void IncreaseMaxHealth(int health)
    {
        slider.maxValue = slider.maxValue + health;
    }
    // Temporarily increase Max Health. waitTime = 5f ~ 5 seconds
    public void TempMaxHealth(float waitTime,int health)
    {
        StartCoroutine(TempHealthTime(waitTime, health)); // start time function
    }
    IEnumerator TempHealthTime(float waitTime, int health) 
    {
        slider.maxValue += health; // adds boost
        yield return new WaitForSeconds(waitTime);
        Debug.Log("Coroutine ended: " + Time.time + " seconds");
        slider.maxValue -= health; // remove boost
    }
    public void PoisonDamage(float waitTime,int health)
    {
        StartCoroutine(PoisonDuration(waitTime, health));
    }
    IEnumerator PoisonDuration(float waitTime,int health)
    {
        
        slider.value -= health;
        if (slider.value <= 0)
        {
            slider.value = 1;
        }
        yield return new WaitForSeconds(waitTime);
        if (slider.value > 1)
        {
            PoisonDamage(waitTime, health);
        }
          else Debug.Log("Coroutine ended: " + Time.time + " seconds" + slider.value);
        
       
    }
}
 
     
    