Autor Wątek: Co sądzicie o unity 4.3 dla 2D  (Przeczytany 5161 razy)

Offline Meic

  • Użytkownik

# Listopad 26, 2013, 17:51:15
Z tego co się orientuję, to akurat darmowa wersja Unity nie obsługuje Occlusion Cullingu (a kto wie czego jeszcze - np. ciekawe jak jest ze Sprite Batchingiem), więc narzekanie na jej mizerne osiągi raczej mija się z celem. W końcu wersja Pro, musi czymś kusić, nie ;> ?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Rethil

  • Użytkownik

# Listopad 28, 2013, 13:27:46
Jak logujesz informacje w Unity na ekranie? Zresztą nieważne - nie rób tego:P Nie od dziś wiadomo, że GUI w unity ssie i jest jednym z najsłabszych elementów silnika. Ssie tak bardzo, że po włączeniu loggera ekranowego w debugowej wersji apki, fps spadł mi z ~60 (górne ograniczenie jakie ustawiłem) do 18. Jeśli chcesz sobie potestować wydajność to licz sobie FPS i ilość obiektów gdzieś w kodzie, a po skończonej symulacji wyloguj wyniki (http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug).

A z innej beczki nie zapominaj, że dodawanie każdego nowego GameObject'u tworzy masę niepotrzebnych informacji. Jeśli chcesz robić takie rzeczy to pomyśl nad napisaniem kodu optymalizujacego wyświetlanie tylu obiektów bez tworzenia zbędnych GameObjectów lub wykorzystaniem czegoś z AssetStore'a (jestem pewien, że ktoś już coś takiego sprzedaje;P).

P.S. Dodaj informację o ilości DrawCalli, z jakich shaderów korzystasz oraz czy twoje obiekty są jednorodnie wyskalowane.

Offline Pawelx156

  • Użytkownik

# Listopad 28, 2013, 15:36:53
Skala animacji wszędzie taka sama.  Błąd polega na tym że, unity wykonuje ciągły update animacji nawet jak są niewidoczne. To powodowało  ze max do uzyskania to 13K na poziom.
 Ale udało mi się dojść do 200 Tysięcy animacji na level ( choć wtedy zajmuje to 1.114 Giga ramu ) , dołączając skrypt z ręcznym wyłączaniem update animatora. Może to naprawią kiedyś...


Zazwyczaj musisz sortować, jak nie masz Z-bufora. Tutaj z-bufor masz, więc możesz zrobić to w sposób klasyczny 3D.

Też doszedłem jak robić izometryczny rzut z dobrym sortowaniem.  Ale nie po z.  Bo nie można w 2d sortować w ten sposób ( tzn można ale na innych zasadach).
Bo w 2D mam takie priorytety:

<Sorting Layer>
// Tu sortuje warstwy
<Order in Layer>
// Tu sortuje wszystkie obiekty po pozycjach Y na ekranie

<Z bufor>
// tu sortuje sobie sprajty w środku obiektu np gracz składający się z X elementów
</Z bufor>

</Order in Layer>
</Sorting Layer>

//
@Edit
Taka kolejność sortowania wymagana jest tylko w przypadku gdy  widok ma być od góry i trzeba sortować  względem osi Y kolejność rysowania.
Do zwykłego platformera starczy Z bufor.
//

I do sortowania wykorzystuje własnie <Order in Layer>.
Operacja dość prosta używając OnBecameInvisible() i OnBecameVisible() włączam i wyłączam Update().
A w update odejmuje od pozycji obiektu pozycje kamery i mam aktualny numer Order in Layer. Działa na setkach tysięcy obiektów na poziom.



A ze światłami to muszę zrobić ta, kże na jednej kamerze renderuje do textury, a na drugiej tą texture wyświetlam i światła trzymam na tej drugiej kamerze.  Wtedy  całość będzie oświetlona poprawnie, bez spadku  FPS ( no bo światło będzie padało na jeden obiekt nie na np 100). Tak mi się bynajmniej wydaje, ale zobaczę jak sobie triala kiedyś zapuszczę pro.
« Ostatnia zmiana: Listopad 28, 2013, 15:52:09 wysłana przez Pawelx156 »

Offline sgorkas

  • Użytkownik

# Listopad 30, 2013, 22:02:49
Wg mojej skromnej opinii Unity 3D od wersji 4.3 stał się świetnym narzędziem do tworzenia gry 2D. Ogólnie rzecz biorąc zawsze był dobry do gier 2D ( tutaj przykład: https://www.youtube.com/watch?v=H_ro57xxjaQ) jednak - jak sama nazwa wskazuje - to gry 3D, ewentualnie 2.5D są wpisane w jego przeznaczenie.