无法通过脚本更改GameObject颜色?
我有一个用于UI的canvas,其图像与canvas大小相同。 Image
的rgba
为0,0,0,0
,使其不可见(因为a
为0)。 我希望从脚本中将图像淡入黑色。 这是我正在使用的代码:
public class NavigationC : MonoBehaviour { public Image screen; float fadeTime = 3f; Color colorToFadeTo; void StartGame() { colorToFadeTo = new Color(0f, 0f, 0f, 255f); screen.CrossFadeColor(colorToFadeTo, fadeTime, true, true); } }
现在,这在执行时没有做任何事情。 但是当我以单位手动更改图像的值以使图像变得可见时,我可以看到脚本改变了图像的颜色。 因此脚本确实有效,它只是不可见,因为脚本没有更改a
值。 那么如何让图像从隐形变为黑色呢?
这是你的问题:
new Color(0f, 0f, 0f, **255f**);
Color
构造函数参数从0f
到1f
取值,但是您将0f
传递到255f
范围值。
那应该是:
colorToFadeTo = new Color(0f, 0f, 0f, 1f);
如果要使用0
到255
范围,则必须将其除以255
。
colorToFadeTo = new Color(0f, 0f, 0f, 255f/255f);
此外, Color32
可以采用0
到255
之间的值。 您可以使用它然后将其转换回颜色。
Color32 color32 = new Color32(0f, 0f, 0f, 255f)); Color color = color32;