Почему мой код C # 6 не компилируется в Unity?

Почему Unity не может работать с C # 6 ? Это всегда приводит к ошибкам компилятора. Вот несколько примеров кода:

using static System.Convert;
using static System.Environment;

$"€{punten}{NewLine}€{Money}{NewLine}€{KilledEnemies}{NewLine}€{bonus}{NewLine}€{total}";

Я использую Visual Studio в качестве редактора кода и строю без ошибок. Если я нажму игру в Unity, он не будет создан.

9 голосов | спросил H. Pauwelyn 3 Jpm1000000pmSun, 03 Jan 2016 19:36:00 +030016 2016, 19:36:00

4 ответа


18

Unity использует старую версию Mono runtime, основанную на .NET3.5. Он использует что-то между C # 3 и 4 с точки зрения возможностей.

Я нашел это путем поиска по сайту. Не уверен, что он работает, но может быть что-то заслуживающее изучения.

ответил flai 3 Jpm1000000pmSun, 03 Jan 2016 22:43:57 +030016 2016, 22:43:57
6

Unity Technologies имеют объявила , что Unity обновляет до 4.6+. Он доступен через бета-тестирование.

ответил Ben Adams 28 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 28 Sep 2016 00:56:23 +0300 2016, 00:56:23
4

Это видео на YouTube демонстрирует, как кто-то смог получить синтаксис C # 6, работающий над Unity, создав новый проект, изменив целевой .Net Framework на 3.5, установив каталоги сборки и выпуска в папку активов проекта Unity и добавив ссылку на dll UnityEngine. Отладка, похоже, работает одинаково.

ответил cjsimon 1 J000000Friday16 2016, 10:04:15
3

Компилятор в Visual Studio имеет больше возможностей, чем компилятор в Unity, что означает, что некоторый код (особенно новые функции c #) приведет к ошибке в Unity, но не в Visual Studio.

Однако вы можете изменить целевую структуру, чтобы она соответствовала той, которая ближе всего к тому, что Unity использует в вашем редакторе. Я сделал это в Xamarin при разработке библиотек для Unity, но похоже, что это возможно и в Visual Studio.

  

В Visual Studio, в свойствах проекта DLL, установите свойство Target framework в используемую вами версию Unity. Это библиотека базового класса Unity, которая соответствует совместимости API, которую нацеливает ваш проект, например библиотеки Unity full, micro или базового класса. Это не позволяет вашей DLL вызывать методы инфраструктуры, которые существуют в других рамках или уровнях совместимости, но которые могут отсутствовать в используемой версии Unity.

https://msdn.microsoft.com/en-us/library/dn940020.aspx

ответил Mattias 4 Jam1000000amMon, 04 Jan 2016 00:51:38 +030016 2016, 00:51:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132