Ich entdeckte etwas Interessantes über Unity Sprite
und Texturen (Texture2D
). Ich erstellte einen 50x50 .png
und rendere ihn in Unity, indem ich ihn an einen GameObject
anschließe und SpriteRenderer
verwende.Einheit Korrekt Sprite/Textur Breite Höhe
Was ich realisiert, wenn ich eine Einheit im Zusammenhang Methode aufrufen (sprite.texture.width
, sprite.rect.width
, sprite.textureRect.width
, etc.), es 50. Aber immer wieder zurückkehren, die wirkliche Größe des Bildes verwandelt sich in 24x24 oder 12x12 abhängig von der Auflösung auf meinem Bildschirm.
Natürlich ist dies keine große Überraschung, da die Projektion usw. angewendet wird, bevor Unity die Dinge auf dem Bildschirm rendern kann; jedoch, der interessante Teil konnte ich keine Methode oder einfachen Weg finden, um die Größe der Sprite
nach der Projektion angewendet wird.
Ich kann immer noch meine eigene Projektion machen, um mit der zugehörigen Größe zu kommen; Ich würde jedoch gerne wissen, ob es einen einfacheren Weg gibt, diese Informationen zu erhalten.
Vielen Dank!
Das ist ... keine einfache Frage zu beantworten. Das Bild könnte sich in einer Transformation befinden, in der eine Skalierung angewendet wurde usw. Aber Sie * können * von Szeneneinheiten in Bildschirmkoordinaten umwandeln. Wenn Sie also wissen, wo die Ecken sind, können Sie 'Camera.main.WorldToScreenPoint (corner)' daraus berechnen. – Draco18s
Ich könnte mich irren, aber die 'wirkliche' Größe des Bildes, das gerendert wird, hängt von Ihrer Bildschirmauflösung, der Kamera-Größe und dem PPU-Wert des Sprites ab. –
@ Draco18s es funktioniert nicht gut. Ich versuchte mit sprite.rect.max zum Weltraum und es kam (-7.3, -4.0) zurück (-4.166, -4.166) – ciyo