Poza oczywistymi różnicami językowymi, czym różnią się UnityScript i C # podczas tworzenia gier w Unity3D?
- Czy jest zauważalna różnica w wydajności?
- Czy kod UnityScript jest spakowany w stanie, w jakim jest? Jeśli tak, czy to pomaga w modyfikowalności gry?
- Czy można korzystać z bibliotek opracowanych dla jednego języka, a rozwijających się w drugim?
- Czy oba języki można mieszać w tym samym projekcie Unity; kodowanie niektórych części w C # i innych w UnityScript?
unity
c#
performance
unityscript
Kostas
źródło
źródło
Odpowiedzi:
Czy jest zauważalna różnica w wydajności?
Nie. Technicznie istnieje niewielka różnica w wydajności , ale w większości przypadków nie jest ona wystarczająca do oparcia wyboru języka.
Czy można korzystać z bibliotek opracowanych dla jednego języka, a rozwijających się w drugim?
Tak. Dopóki zachowasz strukturę folderów zalecaną przez twórcę biblioteki, dostęp do tej biblioteki można uzyskać z dowolnego języka. Ma to związek z kolejnością kompilacji Unity . Niektóre funkcje IDE, takie jak autouzupełnianie, mogą jednak nie działać w wybranej bibliotece. (EDYCJA: można to naprawić za pomocą darmowej wtyczki UnityVS dla Visual Studio.)
Czy można mieszać dwa języki w tym samym projekcie Unity, kodując niektóre części w języku C #, a inne w JavaScript?
Znowu tak. Szybko się jednak komplikuje, ponieważ musisz się upewnić, że wszystko jest skompilowane we właściwej kolejności. Chociaż jest to technicznie możliwe, zalecam wybranie jednego języka i trzymanie się go.
W jakim języku dostępne są lepsze zasoby dla twórców gier (książki, strony internetowe, fora)?
Ciężko powiedzieć. Przeglądając fora, powiedziałbym, że JavaScript ma nieco więcej samouczków i przykładów kodu. Kod jest ogólnie dość łatwy do przeniesienia na inny język, a ponieważ biblioteki są użyteczne w wielu językach, najprawdopodobniej nie będzie to poważny problem.
źródło
Pierwsze pytanie, jakie mają wszyscy początkujący twórcy Unity, to C # lub JS. Zawsze używaj C #.
Teraz możesz myśleć: „Ale nie chcę się uczyć języka C # i już znam trochę JavaScript”.
Jednak mylącą rzeczą, którą należy wziąć pod uwagę, jest to, że Unity JavaScript nie jest JavaScript. Jest to powierzchowna licówka składni ECMA w porównaniu z .NET CLR. Nie robi żadnej fajnej rzeczy, którą JavaScript robi jak anonimowe załączniki i odwołania do funkcji tak, jak normalnie byś ich używał. Ma swoje własne tablice, które nie pasują do normalnych tablic .net, i napotkasz wiele pułapek i ograniczeń, których można było po prostu uniknąć, używając C #. Unity JavaScript to tylko pokryta cukierkami warstwa składni zaprojektowana, aby .NET wydawał się mniej onieśmielający, nic więcej. Przyniesie ci więcej szkody niż pożytku.
źródło
Po pierwsze, polecam C # zamiast JavaScript do programowania w Unity z dwóch głównych powodów. Pierwszy powód sprowadza się do silnej / słabej różnicy w pisaniu, którą w pewnym sensie odrzuciłeś. Myślę, że mocne pisanie działa lepiej niż słabe pisanie na poziomie pojęciowym, ale szczerze mówiąc, jest to cały wielki argument, który ludzie mają, dlatego skupię się bardziej na konkretnym praktycznym problemie: wdrażanie na iOS (i ewentualnie także innych platformach, ale to jest tylko jeden, który znam na pewno) wymaga pisania statycznego. Unity faktycznie ma nawet dyrektywę „#pragma strict”, która z tego powodu może wymusić pisanie statyczne w JavaScript, ale to tylko prowadzi do mojego drugiego powodu ...
Po drugie, JavaScript w Unity nie jest całkowicie taki sam jak JavaScript w przeglądarce. Stwarza to problemy, gdy próbujesz zastosować wiedzę spoza Unity (tj. Większość zasobów o JavaScript) do programowania w Unity. Dlatego wielu programistów Unity nazywa ten język UnityScript.
Teraz, aby odpowiedzieć na twoje konkretne pytania:
Nie bardzo, nie ( niektóre szczegóły )
Zależy od platformy i nie, tak naprawdę nie pomaga modyfikowalność
Myślę, że tak (chociaż nigdy nie musiałem tego robić, ponieważ wszystkie biblioteki, których używam, zostały zaprogramowane w języku C #)
Tak (chociaż staram się tego unikać, ze względu na spójność)
źródło