获取图像的当前 RGB 颜色
Getting current RGB color of Image
我想更改 GameObject
的 image(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)
转换。
我想更改 GameObject
的 image(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)
转换。