获取图像的当前 RGB 颜色

Getting current RGB color of Image

我想更改 GameObjectimage(script) 组件的 Alpha 颜色。

但保存对象的 RGB 值。

我尝试了下一个代码:

        targetObject.GetComponent<Image>().color = new Color32(
            (byte)targetObject.GetComponent<Image>().color.r,
            (byte)targetObject.GetComponent<Image>().color.g,
            (byte)targetObject.GetComponent<Image>().color.b, 
            toAlpha);

但是(byte)targetObject.GetComponent<Image>().color.r returns 0 什么都没有。

有什么想法吗?

结构 Color 使用 [0,1] 范围内的通道值。所以,白色是 (1,1,1,1),黑色是 (0,0,0,0)。 color 属性 returns 是一个 Color 结构,而不是 Color32.

当您将 float 转换为 byte 时,如果通道为 1,则结果将为 1,如果小于 1,则为 0。由于您在 Color32 结构(在 [0,255] 范围内每个通道使用 int),如果起始颜色是全白,您将得到几乎黑色的 (1,1,1,1),如果任何频道未完全打开(即 <255 使用整数),该频道将完全关闭。

只需将 new Color32 更改为 new Color 并删除 (byte) 转换。