When I try to change the Color of an Image, It will change to the original Image color instead.,When I change the color of an Image, it will show the original source image color instead

First of all, sorry for my English, as im Spanish.
I’ll try to explain my problem a little bit better.

Im trying to make a game like Pokemon in Unity, and I have some problems when I try to change the color of the health bar when the HP is less than a half.

To reduce the health, what I do is decreasing the Scale of the Image from the left, that works fine.
In the Unity Editor I change the color to green to change it from the start.
But when I change the color with GetComponent<Image>().color = new Color(255f, 255f, 30f); it returns to the original image color, which is white.

This is the code:

public class HP_Bar_Control : MonoBehaviour
{
    private Color green = new Color(31f, 255f, 30f);
    private Color yellow = new Color(255f, 255f, 30f);
    private Color red = new Color(255f, 30f, 30f);
    private void Start()
    {
        transform.localScale = new Vector3(0.5f, 1f);
    }

    private void Update()
    { 
        if (transform.localScale.x <= 0.25f)
        {
            GetComponent<Image>().color = red;
        } 
        else if (transform.localScale.x <= 0.5f)
        {
            GetComponent<Image>().color = yellow;
        } else
        {
            GetComponent<Image>().color = green;
        }
    }
}

In the start method I just change the state to test the color change.

The problem lies in the float values you passed into the Color constructors. The range should be 0.0f - 1.0f, not 0.0f - 255f. The reason why you see white color is that if you pass float value higher than 1.0f, the Color automatically cuts it to 1.0f. Change your code like that:

	private Color green = new Color(31f/255, 255f/255, 30f/255);
	private Color yellow = new Color(255f/255, 255f/255, 30f/255);
	private Color red = new Color(255f/255, 30f/255, 30f/255);