Unity Correct Sprite/Texture 宽高

Unity Correct Sprite/Texture Width Height

我发现了一些关于 Unity Sprite 和纹理 (Texture2D) 的有趣内容。我创建了一个 50x50 .png 并通过附加到 GameObject 并使用 SpriteRenderer.

在 Unity 中渲染它

我意识到,每当我调用 Unity 相关方法(sprite.texture.widthsprite.rect.widthsprite.textureRect.width 等)时,它总是 return 50。但是,图像的实际大小变成 24x24 或 12x12,具体取决于我屏幕上的分辨率。

当然,这并不奇怪,因为投影等是在 Unity 渲染屏幕上的东西之前应用的;然而,有趣的是,在应用投影后,我找不到任何方法或简单的方法来获取 Sprite 的大小。

我仍然可以通过自己的投影来得出相关的尺寸;但是,我想知道是否有更简单的方法来获取这些信息。

谢谢!

@Draco18s 提到的方法似乎是解决这个问题的唯一方法。

所以,我创建了一个包含 RectTransformSpriteRendererPrefab GameObject,得到的宽度和高度如下:

GameObject twoSide = Instantiate(Resources.Load(mFilePath + "Locater")) as GameObject;

twoSide.GetComponent<RectTransform>().position = Camera.main.ScreenToWorldPoint (new Vector3 (0, 0, 1));
twoSide.GetComponent<RectTransform> ().pivot = new Vector2 (0f, 0f);    // RectTransform should have the same pivot location with Sprite

float width = twoSide.GetComponent<RectTransform> ().offsetMax.x - twoSide.GetComponent<RectTransform> ().offsetMin.x;
float height = twoSide.GetComponent<RectTransform> ().offsetMax.y - twoSide.GetComponent<RectTransform> ().offsetMin.y;