Jakie jest najpoważniejsze ograniczenie Jedności? [Zamknięte]

30

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?

ashes999
źródło
1
DV, ale bez komentarzy, a na pytanie 2.5yo? Dlaczego?
ashes999
Prawdopodobnie przypadkowo się o to potknę. To pytanie jest od samego początku oparte na opiniach. Powiedzenie „W celu zachowania subiektywności tego pytania” nie powoduje, że nie jest ono subiektywne, ponieważ najczęściej powtarzający się przestępca, który uważasz za najbardziej irytujący, nie będzie taki sam, jak najlepszy przestępca następnego użytkownika. Takie wykazy mają niewiele do wartości i wyłącznie pomoc wymusić mity, na przykład co jeśli wszyscy mówili „X jest rzeczą”, ale X zostanie ustalona w Jedności aktualizować tydzień później jeszcze się czołowi odpowiedzi prawdopodobnie pozostanie poprawiane z „X OGROMNY problem ”na szczycie ich list, nawet lata później.
LearnCocos2D
Dodatkowo, która odpowiedź jest poprawna ? Jeśli myślisz o tym, żadna z odpowiedzi nie powinny być przyjmowane jako na odpowiedź, ponieważ nie ma dobry sposób, aby odpowiedzieć na to pytanie. To prawdopodobnie wskaźnik nr 1 subiektywnego pytania.
LearnCocos2D

Odpowiedzi:

33

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.

Tetrad
źródło
1
@iamcreasy, Suit sam, DUDE. „Chociaż Dropbox działa jako usługa pamięci masowej, koncentruje się na synchronizacji i udostępnianiu. Obsługuje historię wersji, więc pliki usunięte z folderu Dropbox można odzyskać z dowolnego zsynchronizowanego komputera. [33] [34] Kontrola wersji Dropbox również pomaga użytkownicy znają historię pliku, nad którym mogą obecnie pracować, umożliwiając więcej niż jednej osobie edytowanie i ponowne publikowanie plików bez komplikacji związanych z utratą poprzedniej postaci. [35] Historia wersji jest ograniczona do 30 dni. dostępna jest nieograniczona historia wersji o nazwie „Pack-Rat”. -Wikipedia
Inżynier
6
Może jestem niesprawiedliwy, ale myślę, że wyjątki NullReferenceExceptions są błędem programisty; powinieneś sprawdzać przychodzące parametry. Oczywiście byłoby to łatwiejsze do wyegzekwowania, gdybyśmy mieli jakiś dodatek do analizy kodu dla MonoDevelop, taki jak w VisualStudio ...
chrish
1
@ ashes999 Zawsze istnieje pewna terminologia, której musisz się nauczyć, dzięki nowej technologii. Słowa są naszymi podstawami pojęć. To samo dotyczy nawet podstawowego Flasha. Hype wokół użyteczności Unity nie jest jednak na nic. Obniża bariery wejścia dla nieprofesjonalnych programistów i pozwala profesjonalistom robić o wiele więcej za dużo mniej. Nie przejmuj się zbytnio domniemanymi ograniczeniami. Są szanse, że większość z nich może nawet nie stanowić dla ciebie bariery. Jedyne, co mnie martwi, to wyjątki wskaźnika zerowego, które można debugować.
Inżynier
3
W jaki sposób odpowiedź Tedrad trzyma się teraz w Unity 4.1.x? Czy ktoś wie?
Sil
1
Kiedy mówisz „Możesz teraz zagnieżdżać prefabrykaty” O czym mówisz? Może ta funkcjonalność została usunięta od czasu ostatniej edycji pytania? A może masz na myśli ten dodatek ?
NauticalMile
6

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 ...

Kpt. Czerwony
źródło
Jak dawno to było? Wygląda na to, że prawie każda wersja zawiera informacje o poprawionej wydajności skórowania. W systemie iOS przeszli ze skórowania GPU na korzystanie z FPU, ponieważ było to znacznie szybsze.
Tetrad
To było miesiąc temu ...
Kpt.
6

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ą ...

Chociaż Dropbox działa jako usługa pamięci masowej, koncentruje się na synchronizacji i udostępnianiu. Obsługuje historię zmian, więc pliki usunięte z folderu Dropbox można odzyskać z dowolnego zsynchronizowanego komputera. [33] [34] Kontrola wersji Dropbox pomaga również użytkownikom poznać historię pliku, nad którym mogą obecnie pracować, umożliwiając więcej niż jednej osobie edytowanie i ponowne publikowanie plików bez komplikacji związanych z utratą poprzedniej postaci. [35] Historia wersji jest ograniczona do 30 dni. Dostępna jest płatna opcja dla nieograniczonej historii wersji o nazwie „Pack-Rat”.

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.

Inżynier
źródło
1
Dropbox, yech. Ale +1 - po to właśnie szukałem.
ashes999
Hehe, myślę, że każdy programista czułby się tak samo. Ale hej, jeśli to zadziała ...
Inżynier
2
Używamy Git z Unity. Konfiguracja plików .gitignore zajmuje trochę pracy, ale działa i daje pełny zestaw funkcji VCS.
Kylotan
2
Używamy Mercurial (z BitBucket) z Unity i działa świetnie, gdy poprawnie skonfigurujesz pliki .hgignore.
JD
@JD (i Kylotan) - Jak obejrzałeś problem z brakiem możliwości łączenia plików scen?
UpTheCreek
6

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).

Kylotan
źródło
1
Za to, co jest warte, możesz używać dowolnego IDE z Unity (używam Visual Studio Pro). Ale jeśli chcesz korzystać z debuggera, jesteś ograniczony do MonoDevelop.
Tetrad,
1
Tak, debugger jest dość ważny (mimo że MonoDevelop nie jest taki świetny). Dodatkowo niestety mówi, że nie działa z Visual Studio Express. Nie znam żadnych innych IDE C #, które ludzie używają. Ale tak naprawdę ten, który jest wysyłany z Jednością, powinien być w lepszej formie.
Kylotan,
Możesz także użyć innych edytorów tekstu, takich jak Sublime Texthttp: //wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
Terrance
Nie próbowałem tego, ale przeczytałem, że jest teraz sposób na użycie Visual Studio do debugowania (myślę, że za pomocą wtyczki). Być może dotyczy to tylko wersji Pro, nie jestem pewien.
Christian
FWIW, UnityVS sprawia, że ​​integracja Visual Studio jest znacznie płynniejsza. Możesz debugować, przesuwać itd.
Podstawowy
5

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.

John Little
źródło
4
Wszelkie narzędzia lub oprogramowanie innych firm mogą dodawać (lub usuwać) klauzule EULA w nowych wersjach. Naprawdę nie rozumiem, jak to jest specyficzne dla Unity. Co więcej, bez popartych dowodami dziwne wydaje się twierdzenie, że klauzula o zakazie hazardu jest na tyle poważna, że ​​stanowi najbardziej szkodliwe ograniczenie oprogramowania w ogólności, do czego dążyło pierwotne (co prawda nie na temat) pytanie. O ile w większości gier Unity nie wykorzystano hazardu jako podstawowej funkcji, ta odpowiedź brzmi bardziej jak rant.
Josh
4

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.

Kylotan
źródło
Możesz zapytać system GUI, aby sprawdzić, czy kliknięcie zostało przez niego zużyte, a następnie zignorować kliknięcie w kodzie wybierania obiektów na całym świecie. Uciążliwe, ale działa.
Sean Middleditch
Jak byś to zrobił?
Kylotan
W wejściowym obiekcie systemowym znajduje się właściwość pozwalająca uzyskać identyfikator „gorącego” elementu, który wyniesie zero, jeśli pod kursorem nie będzie elementu GUI. Zapomnij o dokładnej nazwie właściwości, powinna jednak znajdować się w skrypcie jedności.
Sean Middleditch,