Unity New UI 图像更改颜色不起作用

Unity New UI Image changing Color not working

我正在尝试使用 unity new UI 图片 system.but 为我的玩家实现健康 working.can 没有人帮助 me.Thank 你。

    using UnityEngine.UI;

 if (health_value == 3) {
             GameObject.Find("health").GetComponent<Image>().color.a = 1;
             GameObject.Find("health1").GetComponent<Image>().color.a = 1;
             GameObject.Find("health2").GetComponent<Image>().color.a = 1;

         }

我遇到了这个错误。

  error CS1612: Cannot modify a value type return value of `UnityEngine.UI.Graphic.color'. Consider storing the value in a temporary variable

因为Color是Image的一个struct(我认为这是正确的术语?如果我错了请纠正我),你不能直接编辑它的颜色,你必须创建一个新的Color var,改变它的变量,然后将其分配给 Image.

Image healthImage = GameObject.Find("health").GetComponent<Image>();
Color newColor = healthImage.color;
newColor.a = 1;
healthImage.color = newColor;

或者,

Image healthImage = GameObject.Find("health").GetComponent<Image>();
healthImage.color = Color.red;

我遇到了同样的问题,但原因不同。因此,如果接受的答案不是他们的问题,这可能对其他人有帮助。

请注意 Unity 期望脚本中的颜色值在 0-1 范围内

因此,如果您使用红色,请确保您使用的是红色

gameObject.GetComponent<Image>().color = new Color(1f, 0f, 0f);

而不是

gameObject.GetComponent<Image>().color = new Color(255, 0, 0); // this won't change the image color
 if (health_value == 3) 
{
   GameObject playerHealthImage = GameObject.Find("health").GetComponent<Image>();
   Color healthColor = playerHealthImage.color;

   healthColor.a=1;
   
  //Or          red,Green,Blue,Alpha    

  healthColor = new Color(1,1,1,1);
  playerHealthImage.color = healthColor;
}

您不能单独修改 Colors RGBA 值,因为它是一个 structure.how,您可以根据上述直接分配 Color

GameObject imageGameObject;

// 1.0 - 0.0
float r; 
float g; 
float b; 
float a; 
imageGameObject.GetComponent<Image>().color = new Color(r, g, b, a);

// 255-0
int r32; 
int g32; 
int b32; 
int a32; 
imageGameObject.GetComponent<Image>().color = new Color32(r32, g32, b32, a32);