Использует ли 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 #, которую мне не хватает в текущей версии Unity для C #, - это поддержка асинхронных и связанных ключевых слов и функций. Похожая концепция в Unity - сопрограммы . Они выполняются в главном потоке, поэтому не являются истинными асинхронными, но позволяют разбить долго выполняющийся код на несколько кадров. Многопоточность на более низком уровне все еще поддерживается.
async
в C # также не верно асинхронно, как в многопоточном - он также работает в основном потоке. Самые большие различия с точки зрения использования между сопрограммами и асинхронностью - это время выполнения кода.
Unity 4 использует Mono 2.6 , которая является полной реализацией платформы .NET, включая язык C #.
Я не уверен, как это выглядит по-разному, но имейте в виду, что Unity поддерживает несколько языков, каждый из которых работает поверх одной и той же среды выполнения Mono. Возможно ли, что вы путаете C # с UnityScript ?
Unity использует обычный C #.
Опять же, когда вы пишете C # в Unity, вы будете использовать множество их библиотек, но, насколько я знаю, все возможное в C # возможно в Unity, кроме отличий, перечисленных ниже:
Более конкретные области .Net, связанные с Windows Forms и ASP, запрещены через Unity.
Хотя вы можете использовать Visual Studio для редактирования и ошибок во время компиляции, вы должны создавать и запускать в Unity IDE.
Unity использует Mono, которая является реализацией .Net с открытым исходным кодом, что означает, что есть небольшие различия.
На вопрос о том, отличается ли версия C #, используемая Unity, от «обычной» версии C #, были даны ответы в других сообщениях. Поскольку вы явно запрашиваете определенные элементы, которые могут отличаться от такой обычной версии, я поделюсь единственным незначительным отличием, которое я заметил при сравнении C #, который я использую на работе (то есть C # 4.0 в Visual Studio 2010 и более поздних версиях) и C # в Unity, который является то, что я не могу использовать значения по умолчанию для параметров в определениях функций. что вам нужно более тщательно настроить свой проект, чтобы использовать более новую версию C #. Смотрите эту ссылку для дальнейшего объяснения.
Редактировать: я оставляю этот ответ, поскольку, насколько я знаю, это недоразумение, которое случается с довольно многими людьми.