C# 获取图像的当前RGB颜色

C# 获取图像的当前RGB颜色,c#,image,unity3d,alpha,C#,Image,Unity3d,Alpha,我想更改游戏对象的图像(脚本)组件的Alpha颜色 但是保存对象的RGB值 我尝试了下一个代码: targetObject.GetComponent<Image>().color = new Color32( (byte)targetObject.GetComponent<Image>().color.r, (byte)targetObject.GetComponent<Image>().colo

我想更改
游戏对象的
图像(脚本)
组件的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);
targetObject.GetComponent().color=new Color32(
(字节)targetObject.GetComponent().color.r,
(字节)targetObject.GetComponent().color.g,
(字节)targetObject.GetComponent().color.b,
toAlpha);
但是
(byte)targetObject.GetComponent().color.r
会返回0


有什么想法吗?

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


当您将
float
强制转换为
byte
时,如果通道为1,则结果为1;如果通道小于1,则结果为0。由于您在
Color32
struct中使用这些值(该结构在[0255]范围内对每个通道使用
int
),如果起始颜色为全白色,如果任何通道未完全打开(即struct
color
使用范围[0,1]内的通道值),则几乎为黑色(1,1,1),因此,白色为(1,1)和黑色(0,0,0,0)。property返回的是
color
结构,而不是
Color32


当您将
float
强制转换为
byte
时,如果通道为1,则结果将为1,如果通道小于1,则结果将为0。由于您在
Color32
结构中使用这些值(该结构在[0255]范围内的每个通道使用
int
),如果起始颜色为全白色,则几乎为黑色(1,1,1),如果任何频道未完全打开(即,您是指在执行此代码后?@adjan当然是指在执行此代码后?@adjan当然是指在执行此代码后?@adjan