Po przeczytaniu tego gorącego pytania na temat Unity vs. UDK vs. ID, jestem ciekaw: jakie wielokrotnie uderzające, najbardziej paraliżujące ograniczenie (ograniczenia) Unity?
Aby to pytanie nie było subiektywne, znowu mówię o najczęściej powtarzających się przestępcach z Jedności. Jest to coś, o czym jako użytkownik Unity naprawdę chciałbyś, żeby ktoś Ci powiedział, zanim zaczniesz z niego korzystać.
Słyszałem od kogoś, że Unity nie radzi sobie dobrze z kontrolą wersji, ponieważ generuje wiele plików binarnych (których nie można odróżnić). Dla mnie nie jest to tak naprawdę kaleką, ponieważ pracuję sam.
Myśli?
Odpowiedzi:
Pozwolę sobie powiedzieć, że faceci Unity byli całkiem dobrzy, słysząc główne wyrzuty sumienia, z którymi mierzy się ich społeczność, i ostatecznie obiecują ulepszenie. Istnieje również wiele problemów, które pojawiają się tylko na niektórych platformach lub są kwestią osobistych preferencji lub konkretnych problemów z grą, nad którą pracujesz.
Biorąc to pod uwagę:
1) Słaba integracja kontroli źródła i narzędzi dużego zespołu. Jak już wspomniałeś, wiele niezróżnicowanych plików binarnych. Edytor ignoruje flagę „tylko do odczytu” dla plików scen. Rzeczywiste pliki, które musisz sprawdzić, nie są od razu oczywiste. Niektóre z nich są korygowane w wersji 3.5 dzięki integracji SVN i P4. Istnieją również obietnice formatów scen opartych na tekście. AKTUALIZACJA: Tekstowy format sceny jest teraz dostępny w wersji Pro Unity. Zobacz tutaj .
2) Powolne, programistyczne narzędzia interfejsu użytkownika. Każdy widżet ma swoje własne wezwanie do losowania, które ma wiele kosztów ogólnych na platformach mobilnych. Nie ma koncepcji rzeczy takich jak panele z animacjami i wszystkie inne fantazyjne rzeczy, które sprawiają, że interfejs użytkownika czuje się dobrze bez samodzielnego rozwijania go. Na mapie drogowej jest obietnica nowego systemu interfejsu użytkownika (3.6?). Istnieją narzędzia innych firm, ale nie są świetne.
3) Naprawdę podstawowa edycja cząstek. Obiecują jednak nowy system oparty na krzywych w wersji 3.5. AKTUALIZACJA: Ten system oparty na krzywych, zwany Shuriken, jest już dostępny. Zobacz tutaj .
4) Nie możesz zagnieżdżać prefabrykatów. Mały problem, ale gdy jesteś przyzwyczajony do pracy z systemem prefabrykatów i całą dostępną mocą, może to być frustrujące. Zostało to obiecane, ale nie ma konkretnej daty. AKTUALIZACJA: Możesz teraz zagnieżdżać prefabrykaty.
5) Niemal niemożliwe, aby uzyskać grę na iOS poniżej przekroczenia limitu. Sam plik binarny ma w najlepszym wypadku 8 megabajtów. To nie jest coś, co łatwo naprawić.
6) Wyjątki odniesienia zerowego powodują awarie platform, które nie pozwalają na skompilowany kod JIT. W wersjach autonomicznych lub internetowych wychwytywane są NRE. Nadal jest to niewyłapany wyjątek, ale przynajmniej aplikacja będzie próbowała kontynuować działanie. W systemie iOS powoduje awarię urządzenia. Możesz przełączyć go w tryb debugowania i wyłapać niektóre rodzaje wyjątków, ale wydajność spada.
7) Kiedy pracujesz nad grą wieloplatformową, za każdym razem, gdy zmieniasz cele budowania, musisz ponownie zaimportować wszystko, co zajmuje dużo czasu. Obejrzałem to, po prostu mając wiele kopii projektu na dysku. Najwyraźniej jest serwer importowanych zasobów w wersji 3.5.
źródło
Kiedy ja i przyjaciel ewaluowaliśmy Unity dla większego projektu, stwierdziliśmy, że jednym z większych problemów była wydajność ze skórowaniem ich oprogramowania. Jeśli dobrze pamiętam, mieliśmy coś w rodzaju 10 animowanych obiektów z około 1000 wierzchołków każdy i dostałem 20 fps podczas korzystania z komputera midend ... Niezbyt dobrze ...
źródło
Moim największym problemem była kontrola wersji. Rozwiązanie? Wystarczy użyć DropBox dla projektów Unity. Pod warunkiem, że skonfigurowałeś go poprawnie (tj. Zapłacisz za jego usługę „PackRat”), zachowa on historię zmian. Znacznie łatwiej jest też współpracować z projektantami. W ten sposób, którzy nie chcą wiedzieć o tradycyjnej kontroli wersji, DropBox daje im przejrzyste rozwiązanie. Minusem jest to, że rozgałęzianie / scalanie nie jest tak naprawdę obsługiwane w taki sposób, jak np. git, SVN.
Dla tych, którzy wątpią ...
Zobacz tutaj solidne referencje z forów Unity.
Poza tym jedyną rzeczą, która mnie denerwuje w Unity jest to, że nie ma punktu wejścia aplikacji w sposób, w jaki robi to C (main ()) lub AS3 (klasa dokumentów). Ale po prostu umieścisz swoją aplikację na pustym GameObject, nic wielkiego. Przepływ kodu jest również nieco inny w tej nieodłącznej strukturze, ale znowu nic trudnego do opanowania.
Jeśli chodzi o licencję, większość ludzi nie zdaje sobie sprawy (a szczególnie odnoszę się do małych niezależnych operacji i hobbystów, którzy mogą nie mieć pieniędzy na opłacenie licencji pro i dodatku do menedżera aktywów), że możesz zrobić wszystko, co możesz kiedykolwiek będziesz chciał z wersją podstawową / bezpłatną. Naprawdę, to nie jest jakaś ogromna bariera, zespół Unity był bardzo hojny.
źródło
Pomyślałem o innym poważnym ograniczeniu, które denerwuje mnie na co dzień, więc opublikuję to osobno.
Unity3D chce, abyś edytował swoje skrypty w MonoDevelop, a konkretnie starej wersji MonoDevelop, którą dystrybuują. Funkcja „Znajdź w plikach” tej wersji jest zepsuta, ponieważ jej użycie zwykle powoduje zawieszenie się IDE, co czyni go bezużytecznym.
Byłoby to dużym podrażnieniem dla dowolnego silnika, ale jest to ogromne podrażnienie w Unity, ponieważ zachęca do bardzo zdecentralizowanego systemu oddzielnych komponentów działających na różne obiekty gry. Ale w jaki sposób możesz dowiedzieć się, które komponenty mają dostęp do których właściwości, jeśli nie możesz nawet przeszukać różnych komponentów?
EDYCJA: Ta odpowiedź została opublikowana w 2011 roku: na szczęście błąd Znajdź w plikach został naprawiony jakiś czas temu. I jak mówią komentatorzy, możesz edytować swój kod w innych edytorach (chociaż twój wybór jest ograniczony, jeśli chcesz mieć możliwość uruchamiania w debuggerze).
źródło
Dla mnie najpoważniejszym ograniczeniem jest umowa EULA:
„Ograniczenia hazardu Nie możesz rozpowszechniać ani publikować żadnych treści Licencjobiorcy w związku z wszelkimi Aktywnościami hazardowymi bez oddzielnej licencji od Unity”.
Oznacza to, że od wersji 4.0 nie można używać Unity do gier z gotówką / szansą, chyba że ty lub twoi klienci jesteście gotowi zapłacić dodatkową opłatę licencyjną, która jest negocjowana indywidualnie dla każdego przypadku. Tzn. Widzą, ile jesteś wart, i odpowiednio cię opodatkowują, z podaniem 6 liczb.
Bardziej niepokojące jest to, że kto wie, co dodadzą do umowy EULA v5. Być może wszystkie gry społecznościowe? Być może wszystkie gry wieloosobowe?
Każdy programista korzystający z Unity może zostać objęty okupem w przyszłej wersji.
źródło
Dobre pytanie. Dla mnie największym problemem jest GUI. Nie mam nic przeciwko temu, że koncentruje się na programistach, ale mam na myśli okropny sposób, w jaki obiekty GUI są funkcjami, a nie obiektami, a obsługa GUI jest wypełniona jednym wywołaniem funkcji, które jest używane do renderowania i obsługi zdarzeń, i że nie ma integracji z systemem wejściowym (co oznacza, że kliknięcia elementów GUI można interpretować jako kliknięcia na świecie) itp.
Drugi problem to brak odpowiedniej obsługi kontroli wersji (głównie dlatego, że system używa układu katalogu jako układu projektu, co dezorientuje VCS podczas przenoszenia lub zmiany nazwy), ale można to obejść i nie stanowi to problemu wszyscy.
źródło