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();
}
}
答案 0 :(得分:2)
要使用Texture2D.GetPixel,请从纹理获取像素。请注意:
纹理必须在纹理中设置了启用读/写的标志 导入设置,否则GetPixel将失败。 GetPixel不是 在使用Crunch纹理压缩的Textures上可用。
我发现您使用Input.mousePosition作为在纹理中寻找像素的索引。您还应该注意,一旦它们不匹配:
如果像素坐标超出范围(大于宽度/高度 或小于0),则会根据 纹理的环绕模式。