Чому мій код C # 6 не збирається в Unity?


9

Чому Unity не може працювати з кодом C # 6 ? Це завжди дає мені помилки компілятора. Ось кілька прикладів коду:

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

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

Я використовую Visual Studio як свій редактор коду і будую без помилок. Якщо я натискаю грати в Unity, це не складеться.


Шукати unity .net profile upgradeв Google
матч

Відповіді:


18

Unity використовує стару версію Mono часу виконання, яка базується на .NET3.5. Він використовує щось середнє між C # 3 і 4 з точки зору функцій.

Я виявив це , гуляючи навколо. Не впевнений, чи працює він, але, можливо, варто щось вивчити.


Варто зазначити, що в майбутньому є плани щодо модернізації до нового .NET-профілю ( юни3d.com/unity/roadmap ). Однак, зважаючи на передумови, викладені в дорожній карті, ми побачимо, що це відбудеться лише в кінці 2016 року, найперше, швидше за все, не колись в 2017 році.
evilcandybag

7
Посилання у цій відповіді загнило і тепер повертає 404 :(
ashes999

7
Це причина, чому люди не повинні розміщувати посилання на stackexchange, не надаючи конспект.
Філіпп

За ( forum.unity3d.com/threads/… ) цей інструмент більше не розробляється / підтримується. Альтернатива - ( bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src ), якою я особисто користуюся, хоча вона має вади (як Visual Studio забував про це), або дивіться відповіді на @BenAdams , нижче для кращих новин.
Khale_Kitha


4

Це відео на YouTube демонструє, як комусь вдалося змусити синтаксис C # 6 працювати над Unity, створивши новий проект, змінивши цільову .Net Framework назад до 3,5, встановивши збірку та випустити вихідні каталоги в папку ресурсів проекту Unity та додавши посилання на dll UnityEngine. Здається, налагодження функціонує однаково.


2

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

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

У Visual Studio, у властивостях проекту DLL, встановіть властивість Framework Target на версію рамки Unity, яку ви використовуєте. Це бібліотека базових класів Unity, яка відповідає сумісності API, на яку спрямовано ваш проект, наприклад, бібліотеки повної, мікро чи веб-бібліотеки Unity. Це не дозволяє вашій DLL викликати рамкові методи, які існують в інших структурах або рівні сумісності, але які можуть не існувати у використаній вами версії Unity Framework.

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


Можливо, ви хочете зазначити, що використання інших цільових рамок може спричинити проблеми під час створення інших платформ, ніж Windows.
Філіп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.