Чи Unity використовує іншу версію C #, чи все однаково? Це виглядає інакше, ніж звичайний C #, але в ньому є деякі звичайні елементи C #.
Чи Unity використовує іншу версію C #, чи все однаково? Це виглядає інакше, ніж звичайний C #, але в ньому є деякі звичайні елементи C #.
Відповіді:
Як зазначено в інших відповідях, Unity 4.x використовує модифіковану версію Mono на основі Mono 2.6
Здебільшого це сумісно із .Net 2.0 , хоча мені не вдалося відстежити специфічний список сумісності Mono 2.6.
Це виглядає інакше, ніж звичайний C #, але в ньому є деякі звичайні елементи C #.
Як уже згадувалося в одному з коментарів до вашого питання, це, швидше, пов’язано з особливим сценарієм API Unity, а не самою мовою.
Як приклад, багато коду в типових проектах Unity міститься в підкласах класу під назвою MonoBehavior. Це компоненти, які випадають на GameObjects в середовищі редактора Unity. Ця архітектура призводить до коду C #, який виглядає різним типовим кодом C # (у будь-якому випадку) різними способами:
Практично кажучи, найбільша особливість мови C #, яку я сумую в поточній версії C # Unity, - це підтримка асинхронізації та пов’язані з цим ключові слова та функціональність. Аналогічне поняття в Unity - це супроводи . Вони виконуються на головному потоці, тому не є істинною асинхронією, але дозволяють розбивати тривалий код на кілька кадрів. Багаторівневе нанизування нижнього рівня все ще підтримується.
async
в C # також не відповідає справжньому асинхронізації, як у багатопотоковому - він також працює на головній нитці. Найбільші відмінності, з точки зору використання, між спрощеннями та асинхронією - це час виконання коду.
Unity 4 використовує Mono 2.6 , що є повною реалізацією рамки .NET, включаючи мову C #.
Я не впевнений, як це виглядає інакше, але майте на увазі, що Unity підтримує декілька мов, всі вони працюють над тим же Mono часом виконання. Чи можливо ви плутаєте C # з UnityScript ?
Єдність використовує звичайний C #.
Потім знову, коли ви пишете C # в Unity, ви будете використовувати безліч своїх бібліотек, але, наскільки я знаю, все можливе в C # можливо в Unity, крім відмінностей, перелічених нижче:
Більш конкретні області .Net, що стосуються Windows Forms та ASP, виходять за межі Unity.
Хоча ви можете використовувати Visual Studio для редагування та помилок часу компіляції, ви повинні створити та запустити в ID Unity.
Unity використовує Mono, що є реалізацією з відкритим кодом .Net, а значить, є невеликі відмінності.
На питання, чи відрізняється версія C # від Unity від "звичайної" C #, відповіли інші публікації. Оскільки ви явно просите певні елементи, які можуть відрізнятися від такої звичайної версії, я поділюсь лише незначною різницею, яку я помітив, порівнюючи C #, який я використовую на роботі (наприклад, C # 4.0 в Visual Studio 2010 і вище) та C # в Unity, який полягає в тому, що я не можу використовувати значення за замовчуванням для параметрів у визначеннях функції. що полягає в тому, що вам потрібно більш ретельно налаштувати свій проект, щоб використовувати новішу версію C #. Дивіться це посилання для подальшого пояснення.
Редагувати: Я залишаю цю відповідь, оскільки наскільки я знаю, це непорозуміння, яке трапляється з досить великою кількістю людей.