我想知道如何获取rawImage纹理的像素颜色。
这是我的场景:
openRequest.onblocked = (event) => {
(event.target as any).result.close();
console.log("blocked");
}
正如您所看到的,使用此代码,它可以正常工作但不会被破坏。
事实上,我无法达到蓝色。我只能在我的广场上占据优势。
当我按下右键时,你能帮助我如何获得颜色吗?
由于
答案 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
函数。