Dieser Artikel enthält einige nützliche Erklärungen, auch wenn diese vor Version 4.3 herausgekommen sind:
Wenn Sie den "Pixel Art" -Look bevorzugen, ist die orthografische Größe der Kamera von entscheidender Bedeutung. Dies ist der schwierigste Teil beim Nageln von 2D in Unity.
Die orthographische Größe drückt aus, wie viele Welteneinheiten in der oberen Hälfte der Kameraprojektion enthalten sind. Wenn Sie beispielsweise eine orthografische Größe von 5 festlegen, enthält die vertikale Ausdehnung des Ansichtsfensters genau 10 Einheiten des Weltraums. (Die horizontalen Ausmaße hängen vom Seitenverhältnis der Anzeige ab.)
Denken Sie daran, dass Ihr Sprite-Quad 1 Einheit pro Seite ist. Das heißt, die orthografische Größe gibt an, wie viele Sprites Sie im Ansichtsfenster vertikal stapeln können (geteilt durch 2).
Um das Pixel-Art-Aussehen sauber wiederzugeben, müssen Sie sicherstellen, dass jedes Pixel der Quelltextur des Sprites 1: 1 auf die Ansichtsfensteranzeige abgebildet wird. Sie möchten nicht, dass Quellpixel übersprungen oder verdoppelt werden, oder Ihre Sprites sehen verzerrt und „schmutzig“ aus. Der Trick, um dieses 1: 1-Verhältnis sicherzustellen, besteht darin, eine orthografische Größe festzulegen, die Ihrer vertikalen Bildschirmauflösung geteilt durch die Pixelhöhe eines Sprites entspricht.
Angenommen, Sie arbeiten mit einer Auflösung von 960 x 640 und verwenden 64 x 64-Sprites. Wenn Sie die vertikale Bildschirmauflösung (640) durch die Pixelhöhe eines Sprites (64) dividieren, erhalten Sie 10, die Anzahl der 64x64-Sprites, die in 640 Pixel vertikal gestapelt werden können. Denken Sie daran, dass die orthografische Größe eine halbe Höhe ist. In diesem Fall beträgt die orthografische Zielgröße also 5 (die Hälfte von 10). Es sollte so aussehen:
Wenn Sie die orthografische Größe auf die Hälfte oder das Doppelte dieses Ziels einstellen, erhalten Sie möglicherweise immer noch brauchbare Ergebnisse, da sich die vertikale Größe des Sprites immer noch gleichmäßig in die vertikale Größe des Ansichtsfensters aufteilt. Wenn Sie die orthographische Größe jedoch falsch einstellen, werden einige Pixel übersprungen oder verdoppelt, und es sieht in der Tat sehr schlecht aus:
Variable Auflösung
Sie müssen sich nicht auf eine einzige feste Auflösung beschränken, um saubere Pixelkunst zu rendern. Die einfachste Möglichkeit, mit variablen Auflösungen umzugehen, besteht darin, ein benutzerdefiniertes Skript an Ihre Kamera anzuhängen, mit dem die orthografische Größe entsprechend der aktuellen vertikalen Auflösung und einer bekannten (festen) Sprite-Größe festgelegt wird :
// set the camera to the correct orthographic size
// (so scene pixels are 1:1)
s_baseOrthographicSize = Screen.height / 64.0f / 2.0f;
Camera.main.orthographicSize = s_baseOrthographicSize;
Das ist zwar eine einfache Lösung, hat aber einen Nachteil: Wenn die Bildschirmauflösung abnimmt, sehen Sie immer weniger von der Welt, und Sprites nehmen immer mehr Platz auf dem Bildschirm ein. Dies ist die Konsequenz eines 1: 1-Verhältnisses zwischen Quell- und Bildschirmpixeln: Ein 64x64-Sprite belegt bei 640x480 mehr Platz als bei 1920x1200. Ob dies ein Problem ist oder nicht, hängt von den Anforderungen Ihres Spiels ab.
Wenn Sie möchten, dass Ihre Sprites unabhängig von der Bildschirmauflösung dieselbe scheinbare Größe haben, stellen Sie die orthografische Größe einfach auf einen festen Wert ein und lassen Sie sie dort, unabhängig von der Bildschirmauflösung. Der Nachteil dabei ist, dass Ihre Sprites kein 1: 1-Pixelverhältnis von Quelle zu Bildschirm mehr haben. Sie können die negativen Auswirkungen davon abmildern, indem Sie nur Auflösungen zulassen, die genau die Hälfte oder genau das Doppelte Ihrer Zielauflösung betragen.
(einige Hervorhebungen hinzugefügt)
Dies funktioniert natürlich besser, wenn die Höhenauflösung durch die Sprite-Größe teilbar ist, aber auch wenn dies nicht der Fall ist, liefert es dennoch eine gute Annäherung an ein anständiges Ergebnis.
TL; DR :cameraSelf.orthographicSize = screenH / (float)spriteSize / 2f;