Czy Unity używa innej wersji C #, czy jest to wszystko to samo? Wygląda inaczej niż zwykły C #, ale jest tam kilka zwykłych elementów C #.
Czy Unity używa innej wersji C #, czy jest to wszystko to samo? Wygląda inaczej niż zwykły C #, ale jest tam kilka zwykłych elementów C #.
Odpowiedzi:
Jak stwierdzono w innych odpowiedziach, Unity 4.x używa zmodyfikowanej wersji Mono opartej na Mono 2.6
W przeważającej części jest to zgodne z .Net 2.0 , chociaż nie udało mi się wyśledzić listy kompatybilności Mono 2.6.
Wygląda inaczej niż zwykły C #, ale jest tam kilka zwykłych elementów C #.
Jak wspomniano w jednym z komentarzy do twojego pytania, jest to prawdopodobnie spowodowane szczególnym skryptowym interfejsem API Unity, a nie samym językiem.
Na przykład wiele kodu w typowych projektach Unity znajduje się w podklasach klasy o nazwie MonoBehavior. Są to komponenty upuszczane na GameObjects w środowisku Unity Editor. Ta architektura prowadzi do kodu C #, który wygląda inaczej niż typowy kod C # (w każdym razie dla mnie) na wiele sposobów:
Praktycznie rzecz biorąc, największą funkcją języka C #, za którą tęsknię w obecnej wersji C # Unity, jest obsługa asynchronicznych i powiązanych słów kluczowych oraz funkcjonalność. Podobną koncepcją w Unity są coroutines . Są one wykonywane w głównym wątku, więc nie są prawdziwą asynchronizacją, ale pozwalają na podział długiego kodu na wiele ramek. Wielowątkowość niższego poziomu jest nadal obsługiwana.
async
w języku C # nie jest również prawdziwa asynchronizacja, jak w przypadku wątków wielowątkowych - działa również na wątku głównym. Największe różnice, z punktu widzenia użycia, między coroutines a async to czas uruchomienia kodu.
Unity 4 korzysta z Mono 2.6 , która jest pełną implementacją frameworku .NET, w tym języka C #.
Nie jestem pewien, jak to wygląda inaczej, ale pamiętaj, że Unity obsługuje kilka języków, z których wszystkie działają na tym samym środowisku uruchomieniowym Mono. Czy to możliwe, że mylisz język C # z UnityScript ?
Unity używa zwykłego C #.
Z drugiej strony, kiedy piszesz C # w Unity, będziesz używać wielu ich bibliotek, ale o ile mi wiadomo, wszystko co możliwe w C # jest możliwe w Unity, oprócz różnic wymienionych poniżej:
Bardziej szczegółowe obszary .Net związane z Windows Forms i ASP są niedostępne przez Unity.
Chociaż możesz używać programu Visual Studio do edycji i błędów podczas kompilacji, musisz zbudować i uruchomić w środowisku Unity IDE.
Unity używa Mono, która jest implementacją .Net typu open source, co oznacza, że istnieją niewielkie różnice.
Na pytanie, czy wersja C # używana przez Unity różni się od „zwykłej” wersji C #, odpowiedziały inne posty. Ponieważ wyraźnie pytasz o pewne elementy, które mogą różnić się od tak regularnej wersji, podzielę się jedyną niewielką różnicą, którą zauważyłem, porównując C #, którego używam w pracy (tj. C # 4.0 w Visual Studio 2010 i wyższych) i C # w Unity, które jest to, że nie mogę użyć wartości domyślnych dla parametrów w definicjach funkcji. to znaczy, że musisz ostrożniej skonfigurować swój projekt, aby móc korzystać z nowszej wersji C #. Zobacz ten link w celu uzyskania dalszych wyjaśnień.
Edycja: Pozostawiam tę odpowiedź, ponieważ o ile wiem, jest to nieporozumienie, które przytrafia się dość wielu ludziom.