My HUD is not displaying current values.

So I have developed a hunger, thirst, and health system and I want to display it on my current HUD I used an image for the fill method and tried to develop a script to make it display onto the HUD but it doesn’t seem to display onto the HUD.

here is the code to the System:

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

public class SurvivalUIControl : MonoBehaviour
{
    //variables
    public float maxHealth, maxThirst, maxHunger;
    public float thirstIncreaseRate, hungerIncreaseRate, deadIncreaseRate;
    public float currentHealth, currentThirst, currentHunger;

    public bool playerDead;

    //functions
    public void Start()
    {
        currentHealth = maxHealth;
        currentThirst = maxThirst;
        currentHunger = maxHunger;
    }

    public void Update()
    {

        //thirst and hunger
        if (!playerDead)
        {
            currentHunger -= hungerIncreaseRate * Time.deltaTime;
            currentThirst -= thirstIncreaseRate * Time.deltaTime;
        }

        if (currentThirst <= 0)
        {
            currentHealth -= deadIncreaseRate * Time.deltaTime;
            print("Player is Thirsty!");
            currentThirst = 0;
        }

        if (currentHunger <= 0)
        {
            currentHealth -= deadIncreaseRate * Time.deltaTime;
            print("Player is Starving!");
            currentHunger = 0;
        }

        if(currentHealth < 0)
        {
            Die();
            currentHealth = 0;
        }
    }

    public void Die()
    {
        playerDead = true;
        print("player has Died!");
    }
}

And here is the code to the HUD:

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

public class SurvivalHUDController : MonoBehaviour
{
    public Image health;
    public Image stamina;
    public Image hunger;
    public Image thirst;

    public SurvivalUIControl survivalControl;

    public void Update()
    { 
        health.fillAmount = survivalControl.currentHealth;
        hunger.fillAmount = survivalControl.currentHunger;
        thirst.fillAmount = survivalControl.currentThirst;
    }
}

fillAmount takes a normalized value (between 0 and 1).

In your case, you would either make sure that .currentHealth etc. are always normalized, or (which is probably easier to manage) normalized them yourself when you plug them into the .fillAmount parameter, like so (in the SurvivalHUDController script):

 public void Update()
     { 
         health.fillAmount = survivalControl.currentHealth / survivalControl.maxHealth;
         hunger.fillAmount = survivalControl.currentHunger / survivalControl.maxHunger;
         thirst.fillAmount = survivalControl.currentThirst / survivalControl.maxThirst;
     }

You can also add a Mathf.Clamp01 call to make sure the values don’t go out of the 0-1 range (e.g. health.fillAmount = Mathf.Clamp01(survivalControl.currentHealth / survivalControl.maxHealth)