无法通过脚本更改GameObject颜色?

RnR*_*ger 1 c# unity-game-engine

我有一个用于UI的画布,其图像与画布大小相同.所述Image具有rgba0,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);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,这在执行时没有做任何事情.但是当我a以统一方式手动更改图像的值以使图像变得可见时,我可以看到脚本改变了图像的颜色.因此脚本确实有效,它只是不可见,因为a脚本没有更改该值.那么如何让图像从隐形变为黑色呢?

Pro*_*mer 6

这是你的问题:

new Color(0f, 0f, 0f, **255f**);

Color构造函数的参数从取值0f1f,但要传递0f255f范围值给它.

那应该是:

colorToFadeTo = new Color(0f, 0f, 0f, 1f);
Run Code Online (Sandbox Code Playgroud)

如果你要使用0255的范围,那么你必须把它255.

colorToFadeTo = new Color(0f, 0f, 0f, 255f/255f);
Run Code Online (Sandbox Code Playgroud)

此外,还有Color32可以取0和之间的值255.您可以使用它然后将其转换回颜色.

Color32 color32 = new Color32(0f, 0f, 0f, 255f));
Color color = color32;
Run Code Online (Sandbox Code Playgroud)