W tym artykule podano kilka przydatnych wyjaśnień, nawet jeśli było to wcześniej niż 4.3:
Jeśli szukasz wyglądu „pixel art”, rozmiar ortografii aparatu ma kluczowe znaczenie; jest to najtrudniejsza część gwoździowania 2D w Unity.
Rozmiar ortograficzny wyraża liczbę jednostek świata zawartych w górnej połowie projekcji kamery. Na przykład, jeśli ustawisz rozmiar ortograficzny na 5, wówczas pionowe zakresy rzutni będą zawierać dokładnie 10 jednostek przestrzeni świata. (Zakresy poziome zależą od współczynnika kształtu wyświetlacza.)
Przypomnij sobie, że twój sprite quad ma 1 jednostkę na bok. Oznacza to, że rozmiar ortograficzny mówi, ile duszków można ułożyć pionowo w rzutni (podzielone przez 2).
Aby renderowanie pikselowego wyglądu wyglądało czysto, musisz upewnić się, że każdy piksel źródłowej tekstury duszka mapuje 1: 1 na ekran rzutni. Nie chcesz, aby piksele źródłowe były pomijane lub podwajane, bo twoje duszki będą wyglądały na zniekształcone i „brudne”. Sztuczka zapewniająca ten stosunek 1: 1 polega na ustawieniu rozmiaru ortograficznego, który odpowiada pionowej rozdzielczości ekranu podzielonej przez wysokość piksela duszka.
Załóżmy, że korzystasz z formatu 960 x 640 i używasz duszków 64 x 64. Dzielenie pionowej rozdzielczości ekranu (640) przez wysokość piksela duszka (64) daje 10, liczbę 64x64 duszek, które można ułożyć pionowo w 640 pikseli. Pamiętaj, że rozmiar ortograficzny ma połowę wysokości, więc docelowy rozmiar ortograficzny w tym przypadku będzie wynosić 5 (połowa z 10). To powinno wyglądać tak:
Jeśli ustawisz swój rozmiar ortograficzny na połowę lub podwojony cel, nadal możesz uzyskać użyteczne wyniki, ponieważ rozmiar pionowy duszka będzie nadal dzielił się równomiernie na rozmiar pionowy rzutni. Ale jeśli niepoprawnie ustawisz rozmiar ortograficzny, zobaczysz, że niektóre piksele zostały pominięte lub podwojone, i rzeczywiście będzie wyglądać bardzo źle:
Zmienna rozdzielczość
Nie musisz ograniczać się do jednej, stałej rozdzielczości, aby renderować czyste piksele. Najprostszym sposobem obsługi zmiennych rozdzielczości jest dołączenie do aparatu niestandardowego skryptu, który ustawia rozmiar ortograficzny zgodnie z bieżącą rozdzielczością pionową i znanym (stałym) rozmiarem duszka :
// 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;
Chociaż jest to prosta poprawka, ma ona tę wadę, że wraz ze spadkiem rozdzielczości ekranu będzie coraz mniej świata, a duszki zajmą coraz więcej ekranu. Jest to konsekwencja utrzymania stosunku 1: 1 między pikselami źródłowymi i ekranowymi: duszek 64x64 zajmuje bardziej pozorną przestrzeń przy 640x480 niż 1920x1200. To, czy jest to problem, czy nie, zależy od potrzeb konkretnej gry.
Jeśli chcesz, aby duszki pozostawały w tym samym pozornym rozmiarze niezależnie od rozdzielczości ekranu, po prostu ustaw rozmiar ortograficzny na stałą wartość i pozostaw go tam bez względu na rozdzielczość ekranu. Wadą jest to, że twoje duszki nie będą już miały stosunku pikseli do ekranu 1: 1. Możesz złagodzić złe skutki tego, dopuszczając tylko rozdzielczości, które są dokładnie o połowę lub dokładnie dwukrotnie wyższe od rozdzielczości docelowej.
(dodano pewne podkreślenie)
To oczywiście działa lepiej, jeśli rozdzielczość wysokości jest podzielna przez rozmiar duszka, ale nawet jeśli nie jest, nadal daje dobre przybliżenie przyzwoitego wyniku.
TL; DR :cameraSelf.orthographicSize = screenH / (float)spriteSize / 2f;