【问题标题】:Get a pixel from a relative x,y position on a scaled down UI Image in Unity 3D从 Unity 3D 中按比例缩小的 UI 图像上的相对 x,y 位置获取像素
【发布时间】:2017-07-12 15:05:28
【问题描述】:

我试图在相对位置 Vector2(50,60) 的图像对象上找到一个像素。但是,虽然对象只有 100x100,但我的图像是 1200x1200(用于分辨率缩放目的)。当我尝试这样做时:

Color color = mask.sprite.texture.GetPixel(x, y);

它返回图像上 (50,60) 的像素,而不是游戏对象上的像素(图像上的 50,60 始终是空白像素)

我的问题:如何在缩小的游戏对象 UI 图像上找出所需游戏对象位置的像素颜色。

【问题讨论】:

  • x / currentSizeX * originalSizeX ?
  • 你有很多选择,你的主要问题基本上是将你的 50、60 坐标映射到你的 1200x1200 范围。 U 也可以查找所选对象的纹理坐标 (RaycastHit.textureCoord)。然后做一个纹理查找。您当前的帖子需要较少的信息才能以代码形式为您提供正确的答案。
  • 我认为 unity 会有一些开箱即用的功能,但我会选择 @Draco18s 的答案。我不确定,但在我看来,光线投射的执行速度比计算和缩放要慢。

标签: c# unity3d


【解决方案1】:

您需要计算相对于缩放的位置。

Vector2 originalResolution = new Vector2(1200, 1200);
Vector2 scaledResolution = new Vector2(100, 100);
Vector2 colorPixelPos = new Vector2(50, 60);
Vector2 actualPixelPos = new Vector2(colorPixelPos.x * scaledResolution.x / originalResolution.x, colorPixelPos.y * scaledResolution.y / originalResolution.y);
Color color = mask.sprite.texture.GetPixel((int)actualPixelPos.x, (int)actualPixelPos.y);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2014-02-22
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多