I am trying to make a health system where hearts display how much health you have. On each heart, I have an Image component. I am trying to control what source image the Image component uses from a script, but it is not letting me. I read the documentation for the Image component here and it has no sprite property. This is my code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class HeartScript : MonoBehaviour
{
public GameObject heart1;
public GameObject heart2;
public GameObject heart3;
public Sprite halfHeart;
public Sprite fullHeart;
public Sprite emptyHeart;
private double playerHealth = 3;
// Update is called once per frame
void Update()
{
if(playerHealth == 2.5)
{
heart1.GetComponent<Image>().image = fullHeart;
heart2.GetComponent<Image>().image = fullHeart;
heart3.GetComponent<Image>().image = halfHeart;
}
else if(playerHealth == 2)
{
heart1.GetComponent<Image>().image = fullHeart;
heart2.GetComponent<Image>().image = fullHeart;
heart3.GetComponent<Image>().image = emptyHeart;
}
else if(playerHealth == 1.5)
{
heart3.GetComponent<Image>().image = emptyHeart;
heart2.GetComponent<Image>().image = halfHeart;
heart1.GetComponent<Image>().image = fullHeart;
}
else if(playerHealth == 1)
{
heart3.GetComponent<Image>().image = emptyHeart;
heart2.GetComponent<Image>().image = emptyHeart;
heart1.GetComponent<Image>().image = fullHeart;
}
else if(playerHealth == .5)
{
heart3.GetComponent<Image>().image = emptyHeart;
heart2.GetComponent<Image>().image = emptyHeart;
heart1.GetComponent<Image>().image = halfHeart;
}
else if(playerHealth == 0)
{
heart3.GetComponent<Image>().image = emptyHeart;
heart2.GetComponent<Image>().image = emptyHeart;
heart1.GetComponent<Image>().image = emptyHeart;
}
}
public void RemoveHealth()
{
playerHealth = playerHealth - 0.5;
}
}
How do I change the sprite the heart uses from a script?
heart1.GetComponent<Image>().spriteinstead ofheart1.GetComponent<Image>().image\$\endgroup\$