Czym różnią się C # i UnityScript w rozwoju Unity? [Zamknięte]

13

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?
Kostas
źródło
Nie ma mądrego komponentu. Ale C # pozwala na dodatkowe rzeczy, takie jak import DLL. Poza tym jest to „wybór”. I całkowicie subiektywnie. Nie zapomnij, jest też Boo, w którym możesz napisać swój kod.
Sidar
2
Pomocne pytanie z obiektywnymi odpowiedziami - wydaje się niesprawiedliwe, że zostało zamknięte.
UpTheCreek,
1
Są dwa główne powody, dla których to pytanie zostało zamknięte, i nie mają one związku z użytecznością pytania ani obiektywnością odpowiedzi. Po pierwsze, post zawiera więcej niż jedno niezwiązane pytanie. Po drugie, niektóre z zadanych pytań są zbyt zorientowane na dyskusję i / lub dwa ogólne, aby były odpowiednie, jak napisano. To, jak „pomocne” lub popularne jest pytanie, lub jak dobre są odpowiedzi, jest niezależne od tego, czy pytanie jest odpowiednie dla witryny.

Odpowiedzi:

12

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.

Lokkij
źródło
8

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.

Grenlandia
źródło
7

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:

Czy jest zauważalna różnica w wydajności?

Nie bardzo, nie ( niektóre szczegóły )

Czy kod javascript jest spakowany w stanie, w jakim się znajduje? A jeśli tak, to czy pomaga to w modyfikacji gry?

Zależy od platformy i nie, tak naprawdę nie pomaga modyfikowalność

Czy można korzystać z bibliotek opracowanych dla jednego języka, a rozwijających się w drugim?

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

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?

Tak (chociaż staram się tego unikać, ze względu na spójność)

jhocking
źródło
dentedpixel.com/developer-diary/… może chcieć dodać to do swojej odpowiedzi. Pozytywne.
Gray
ciekawe linke, dodane
jhocking