Głównym „pro” Uinty3D jest to, że jest szalony szybko. Nie mówię tu o wydajności, ale o szybkości programowania. Ty masz:
- Potok ujednoliconego zasobu. W ogóle nie trzeba tracić czasu na podsystem zasobów, nie ma żadnych wadliwych procedur importowania do napisania i naprawy: wystarczy upuścić plik do folderu i działa.
- Zintegrowany edytor poziomów. Nie musisz tracić czasu na narzędzia poziomu: po prostu przejdź do pracy.
- Świetna obsługa poprawiania i debugowania: wszystkie zmienne w grze są wyświetlane w trakcie gry i można je również zmieniać w locie - a wszystko to bez pisania ani jednego wiersza kodu. Wstrzymaj grę w dowolnym momencie lub krok po kroku wypisz jedno zdanie.
- Całkiem kompleksowa biblioteka gotowych komponentów. Renderowanie, dźwięk, fizyka, sterowanie - napisano już dużo kodu „płyty grzewczej”.
- Mono jako host skryptów. Podczas gdy można spierać się o zalety C # jako języka, biblioteka bazowa klasy Mono oferuje bogactwo funkcji. Kolekcje, operacje wejścia / wyjścia, wielowątkowość i niesamowicie ekspresyjny LINQ znacznie przyspieszają rozwój.
Ponadto Unity3d jest naprawdę dobry na wielu platformach. Oczywiście nie można stworzyć, powiedzmy, gry Windows .exe, a następnie magicznie sprawić, by „po prostu działała” na iPhonie; ale Unity bardzo się do tego zbliża. Wymagane jest „podkręcenie” bardziej niż „przeniesienie”.
Oczywiście w niektórych przypadkach Unity3D nie jest idealny. Sieciowy multiplayer zintegrowany z Unity jest OK dla niektórych peer-to-peer LAN, ale wszystko, co wymaga centralnego serwera, wymaga napisania całego kodu sieciowego od zera. System GUI Unity jest dość dziwaczny i wolny, więc tworzenie skomplikowanych GUI w grze jest uciążliwe. Jednak wszystkie inne systemy GUI gier, które widziałem, są również bolesne, więc jeden z Unity nie jest wcale taki zły.
I oczywiście Unity3D jest nieco mniej elastyczny niż „silniki gier”, takie jak OGRE, które oferują tylko bibliotekę / kod źródłowy. Jego wydajność nie jest na najwyższym poziomie, a ponieważ masz tylko piaskownicę skryptową, nie możesz użyć sprytnych hacków niskiego poziomu, aby go poprawić. Na przykład, jeśli wbudowany moduł renderujący drzewa Unity z jakiegoś powodu Cię nie zadowoli, nie możesz napisać własnego (dobrze, możesz, ale działałoby to za pomocą skryptów i najprawdopodobniej działało by zbyt wolno i powodowało problemy ). W Unity można jednak zrobić wszystko, o ile nie masz nic przeciwko utracie wydajności.
Największym „oszustwem” Unity3D jest jednak kontrola źródła. Jak już wspomniano, własny serwer zasobów Unity kosztuje dość grosza. I to jest naprawdę do kitu. Nie ma nawet rozgałęzień. Podczas gdy Unity3D teoretycznie obsługuje systemy SCM innych firm, korzystanie z nich jest również niebezpieczne. Widziałem, jak ustawienia importowania „magicznie” zmieniają się po zatwierdzeniu SVN lub parametry wszystkich obiektów znikają po użyciu Perforce. Wszystko to można obejść, ale i tak Unity3D + Kontrola źródła = ból.
Tak więc, aby odpowiedzieć na twoje pytanie. Wierzę Unity3D jest jednym z najlepszych, jeśli nie najlepszy, wybór silnika gry dla „małej” gry. Zwłaszcza na etapie prototypu.
To powiedziawszy, jeśli mówimy o projekcie edukacyjnym, odradzam go. Aby dowiedzieć się, jak działają gry, lepiej napisać jedną na jak najniższym poziomie. Silniki gier są doskonałym narzędziem; ale aby użyć go do maksymalnych korzyści, trzeba zrozumieć, jak działają i dlaczego działają w ten sposób. A najlepszym sposobem, aby się tego nauczyć, jest napisanie własnego silnika gry - nawet jeśli ostatecznie okaże się kiepski.