Der Umgang mit 2D-Koordinaten und die Skalierung in Unity ist recht einfach, aber nicht offensichtlich, und wie Sie bemerkt haben, unterscheidet es sich von der Funktionsweise anderer Entwicklungswerkzeuge. Dies liegt daran, dass Unity eine 3D-Engine war, in die kürzlich 2D-Grafiken eingepfropft wurden.
Insbesondere ist 1 Einheit in Unity nicht unbedingt 1 Pixel im Bild. Wenn Sie Bilder als 2D-Sprites importieren, gibt es tatsächlich eine Pixel-zu-Einheiten-Einstellung, die 1: 1 vorgenommen werden kann. Ich empfehle jedoch aus mehreren Gründen, die Standardeinstellung 100: 1 beizubehalten (die Physik-Engine funktioniert nicht richtig bei 1: 1: 1). 1, und die Standardeinstellung ist besser für die Kompatibilität mit dem Code anderer).
Diese Skalierungseinstellung bedeutet, dass alle Positionen durch 100 geteilt werden. Es ist ziemlich einfach, solange Sie sich immer an die Skalierung erinnern. Wenn Sie ein Sprite um 256 Pixel verschieben möchten (z. B.), verschieben Sie es um 2.56. Sie können auch eine Dienstprogrammfunktion schreiben, um Zahlen auf 2 Dezimalstellen / das nächste Pixel zu runden: Mathf.Round (float * 100) / 100f
Um eine pixelgenaue Kamera einzurichten, setzen Sie sie zunächst als orthografische Kamera ein. Wenn Sie die Kamera auswählen, befindet sich in ihren Einstellungen ein Dropdown-Menü für die perspektivische oder orthografische Projektion. Perspektive bedeutet, dass die Dinge 3D aussehen, während orthografisch die Szene flach anzeigt. Direkt unter dieser Dropdown-Liste befindet sich Größe. Stellen Sie die orthografische Größe der Kamera auf die Hälfte der Pixelabmessungen des gewünschten Bildschirms ein.
Angenommen, Sie möchten einen pixelgenauen 1024 x 768-Bildschirm. Das bedeutet, dass die Kamerahöhe 384 Pixel betragen sollte. Teilen Sie dies durch 100 (aufgrund der Pixel-zu-Einheiten-Skalierung) und Sie erhalten 3,84 für die Kameragröße. Auch diese Mathematik ist einfach SCREEN_SIZE / 2 / 100f
(Ich habe darauf gewartet, welche anderen Antworten zuerst kommen, aber es ist ein paar Tage her. Ich habe 2D in Unity eine Weile mit 2D Toolkit ausgeführt , bin aber relativ neu in den integrierten 2D-Funktionen.)