首页 > 解决方案 > (统一)获取鼠标位置的RGB?

问题描述

这里的 HS 学生想知道如何在 Unity 中获取鼠标位置的 RGB 值?我到处环顾四周,有一些简单的方法不起作用,或者没有答案,或者与我正在尝试做的事情无关的极其复杂的方法。

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

这是我的代码,我尝试了 2 种不同的方法,我认为它们会起作用,但没有(我知道我不需要 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();
    }


}

标签: unity3drgb

解决方案


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

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

而且我发现你使用 Input.mousePosition 作为索引来寻找纹理中的像素。你还应该注意,一旦它们不匹配:</p>

如果像素坐标超出范围(大于宽度/高度或小于 0),它们将根据纹理的环绕模式被钳制或重复。


推荐阅读