Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity尝试使用Color.RBGtoHSV从get像素获取色调,但H始终返回0_C#_Unity3d - Fatal编程技术网

C# Unity尝试使用Color.RBGtoHSV从get像素获取色调,但H始终返回0

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); } 纹理为

我创建了一个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);
}
纹理为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);
}