I’m getting a nullreference exception for this line:
maxHealthRemainder = playerHealth.maxHealth % 2;
here’s my code:
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class HealthBarUI : MonoBehaviour
{
public GameObject heartPrefab;
public PlayerHealth playerHealth;
List<HealthHeart> hearts = new List<HealthHeart>();
private void OnEnable()
{
PlayerHealth.OnPLayerDamaged += DrawHearts;
}
private void OnDisable()
{
PlayerHealth.OnPLayerDamaged -= DrawHearts;
}
private void Start()
{
DrawHearts();
}
public void CreateEmptyHeart()
{
GameObject newHeart = Instantiate(heartPrefab);
newHeart.transform.SetParent(transform);
HealthHeart heartComponent = newHeart.GetComponent<HealthHeart>();
heartComponent.SetHeartImage(HeartStatus.Empty);
hearts.Add(heartComponent);
}
public void DrawHearts()
{
ClearHearts();
int maxHealthRemainder = 0;
maxHealthRemainder = playerHealth.maxHealth % 2;
int heartsToMake = (int)(playerHealth.maxHealth / 2 + maxHealthRemainder);
for(int i=0; i<heartsToMake ; i++)
{
CreateEmptyHeart();
}
for(int i=0; i<hearts.Count; i++)
{
int heartStatusRemainder = (int)Mathf.Clamp(playerHealth.currentHealth - (i*2), 0, 2);
hearts[i].SetHeartImage((HeartStatus)heartStatusRemainder);
}
}
public void ClearHearts()
{
foreach(Transform T in transform )
{
Destroy(T.gameObject);
}
hearts = new List<HealthHeart>();
}
}
New contributor
K.Cs.Ákos is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.