unity3d - (统一)获取鼠标位置的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();
}
}
解决方案
要使用Texture2D.GetPixel从纹理中获取像素。请注意:
纹理必须在纹理导入设置中设置读/写启用标志,否则 GetPixel 将失败。GetPixel 在使用 Crunch 纹理压缩的纹理上不可用。
而且我发现你使用 Input.mousePosition 作为索引来寻找纹理中的像素。你还应该注意,一旦它们不匹配:</p>
如果像素坐标超出范围(大于宽度/高度或小于 0),它们将根据纹理的环绕模式被钳制或重复。
推荐阅读
- javascript - 有没有一种有效的方法来使用正则表达式从 HTML 字符串中提取数据?
- python - 路由器中的 URL 模式不匹配 | Django Restframewok
- android - 如何在不自动播放过渡的情况下恢复 MotionLayout 的过渡状态?
- flutter - 无法从现有项目中创建桌面应用程序支持
- c++ - 交换矢量以释放它
- php - Laravel Livewire 事件(例如点击)不起作用。我正在使用 laravel 7
- java - 根据配置的时间表,给定的触发器永远不会触发 Quartz
- c++ - 为什么在一个翻译单元中定义的函数可以在另一个翻译单元中访问,在该翻译单元中它被前向声明为静态?
- angular - Angular 9. 页面上的同步 *ngFor
- php - 目标类 [Admin\AdminController] 不存在