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);
我正在尝试使用 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);