(统一)获取鼠标位置的RGB?

时间:2018-08-14 07:29:27

标签: unity3d rgb

HS学生在这里想知道如何获取Unity中鼠标位置的RGB值?我到处都是,到处都是简单的方法不起作用或无法解决,或者非常复杂的方法与我要执行的操作无关。

基本上我跟踪了鼠标的位置,现在正试图获取其下图像的RGB值,这不起作用吗?

这是我的代码,我尝试了两种我认为可行的方法,但没有(我知道我既不需要Raw Image也不需要Texture2D,这就是每种方法都尝试过的方法)。

public Text cords = null;
int mousex;
int mousey;

public RawImage pic;
public Text textColor = null;
public Texture2D image;

void Start () {

}


void Update () {
    mousex = (int)Input.mousePosition.x;
    mousey = (int)Input.mousePosition.y;
    cords.text = "X: " + mousex + "   Y: " + mousey;

    //Color32 color = (pic.texture as Texture2D).GetPixel(mousex, mousey);
    Color32 color = image.GetPixel(mousex, mousey);
    //textColor.text = color.ToString();
    Color32 Hovercolor;
    if (Input.GetMouseButtonDown(0)) {
        Hovercolor = image.GetPixel(mousex, mousey);
        textColor.text = Hovercolor.ToString();
    }


}

1 个答案:

答案 0 :(得分:2)

要使用Texture2D.GetPixel,请从纹理获取像素。请注意:

  

纹理必须在纹理中设置了启用读/写的标志   导入设置,否则GetPixel将失败。 GetPixel不是   在使用Crunch纹理压缩的Textures上可用。

我发现您使用Input.mousePosition作为在纹理中寻找像素的索引。您还应该注意,一旦它们不匹配:

  

如果像素坐标超出范围(大于宽度/高度   或小于0),则会根据   纹理的环绕模式。