C# Unity尝试使用Color.RBGtoHSV从get像素获取色调,但H始终返回0
我创建了一个Unity游戏对象并添加了一个脚本C# Unity尝试使用Color.RBGtoHSV从get像素获取色调,但H始终返回0,c#,unity3d,C#,Unity3d,我创建了一个Unity游戏对象并添加了一个脚本 public Texture2D TheTexture; void Awake() { float H, S, V; Color c = TheTexture.GetPixel(4, 4); Color.RGBToHSV(c, out H, out S, out V); Debug.Log("H: " + H + " S: " + S + " V: " + V); Debug.Log(c); } 纹理为
public Texture2D TheTexture;
void Awake()
{
float H, S, V;
Color c = TheTexture.GetPixel(4, 4);
Color.RGBToHSV(c, out H, out S, out V);
Debug.Log("H: " + H + " S: " + S + " V: " + V);
Debug.Log(c);
}
纹理为10x10 bmp,其中整个图像为纯蓝色表面RGB 0,0255
当我运行这个时,H值为0。C显示准确,所以我相信我在正确地读取图像
知道我做错了什么吗。最终,我只是想从位图中获取颜色的色调。好吧,在你发布的代码中,你永远不会更改
H
、S
和V
你可以用
我看到你在你的问题中加了它。但我不能证实我怀疑你的像素颜色不对。 为了 我得到了正确的输出: RGBA(0.000,0.000,1.000,1.000) H:0.667 S:1 V:1
0
的色调实际上是红色的…很抱歉,我不小心删除了那行代码。我现在又加了回去我在剪切粘贴操作中不小心删除了那行代码,不知道怎么做,但我现在修复了它..我怀疑你的像素错了。。。对于Color c=新颜色(0,0,1,1)代码>我得到RGBA(0.000,0.000,1.000,1.000)
和H:0.66667s:1v:1
你是对的!阅读下面我的答案。谢谢你的帮助,很抱歉浪费了你的时间。我会在下面的评论中给出我的答案,并接受你的回答。事实证明,问题在于图像本身。我编辑了图像,但Unity不接受我的编辑。仔细检查C结果后,我意识到我没有得到蓝色图像(RGB 0,0,1),我得到的是红色图像,这是我编辑之前的原始图像。红色的色调是。。。0所以我的代码一直在工作。我最终删除了我的图片并上传了一个新的资产,我把它附加到代码中,第一次尝试就成功了。我有点傻在问这个问题之前我没有测试过这个,但也许其他人会从我的愚蠢举动中受益。
void Start()
{
Color c = TheTexture.GetPixel(4, 4);
Color.RGBToHSV(c, out var H, out var S, out var V);
Debug.Log("H: " + H + " S: " + S + " V: " + V);
}
void Start()
{
Color c = new Color(0, 0, 1, 1);
Color.RGBToHSV(c, out var H, out var S, out var V);
Debug.Log(c);
Debug.Log("H: " + H + " S: " + S + " V: " + V);
}