一尘不染

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

c#

我有一个用于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);
    }
}

现在,执行该命令不会执行任何操作。但是,当我a统一手动更改图像的值以使图像可见时,我可以看到脚本更改了图像的颜色。因此脚本确实可以正常工作,因为a它没有被脚本更改,所以它不可见。那么如何使图像从不可见变为黑色?


阅读 302

收藏
2020-05-19

共1个答案

一尘不染

这是您的问题:

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

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

应该是:

colorToFadeTo = new Color(0f, 0f, 0f, 1f);

如果要使用0to 255范围,则必须将其除以255

colorToFadeTo = new Color(0f, 0f, 0f, 255f/255f);

另外,Color32其中的值可以在0和之间255。您可以使用它,然后将其隐化为彩色。

Color32 color32 = new Color32(0f, 0f, 0f, 255f));
Color color = color32;
2020-05-19