Unity 2D:获取原始图像的颜色像素

时间:2017-01-09 14:19:36

标签: c# user-interface unity3d color-picker

我想知道如何获取rawImage纹理的像素颜色。

这是我的场景:

enter image description here

openRequest.onblocked = (event) => {
      (event.target as any).result.close();
      console.log("blocked");
 }

正如您所看到的,使用此代码,它可以正常工作但不会被破坏。

事实上,我无法达到蓝色。我只能在我的广场上占据优势。

当我按下右键时,你能帮助我如何获得颜色吗?

由于

2 个答案:

答案 0 :(得分:1)

您使用的鼠标位置

table

位于屏幕空间中(意味着您获得的位置与屏幕尺寸有关)。

您想要获得的是画布空间中的鼠标位置(相对于画布大小,因此您不必担心画布大小)。

您可以通过在ColorPicker脚本中实现IPointerClickHandler来实现这一点(这也比使用Input.mousePosition更好)。

Input.mousePosition 

PointerEventData包含许多有用的信息,您可以在统一文档中获取更多信息https://docs.unity3d.com/ScriptReference/EventSystems.PointerEventData.html

您可能仍需要使用

转换鼠标位置
using UnityEngine.EventSystems;    

  public class ColorPicker : MonoBehaviour, IPointerClickHandler{

  public GameObject Cube;

  void OnPointerClick(PointerEventData eventData)
  {
     //eventData.position
     //Vector3 localPosition = transform.InverseTransformPoint(eventData.pressPosition);
     //ignore z coordinate
  }
}

因为我还没有测试过这个。但我希望这能指出你正确的方向!

答案 1 :(得分:0)

尝试将其转换为 2DTexture,然后您可以使用 Texture2D.GetPixels 函数。