Здравствуйте, Qbit86, Вы писали:
Q>В какой-то степени оно всё CIL-совместимо и теоретически можно писать нескриптовый код в 2015 Студии на новом C# 6 под старый .NET 3.5, но там свои ограничения и подводные грабли с AOT на iOS.
Я приделал к Unity два компилятора C# 6: майкрософтовский и из поставки Mono 4.0.0.
http://forum.unity3d.com/threads/c-6-0.314297/#post-2108999
http://www.gamedev.ru/flame/forum/?id=151586&page=32#m472
Также приспособил библиотеку AsyncBridge.Net35.dll, теперь могу использовать async/await прямо в скриптах вместо сопрограмм.
Не знаю, можно ли этим пользоваться в продакшене, пока играюсь, смотрю, какие вылезут косяки. В редакторе, в билдах под Windows и на Андроиде у меня заработали все фичи C# 6. Т.е. вообще всё, кроме dynamic, естественно. Под WebGL IL2CPP не смог скомпилировать фильтры исключений и библиотека AsyncBridge ему не понравилась, т.е. недоступны async/await и атрибуты caller information.
iOS у меня нет, поэтому проверить AOT не могу, хотя было бы интересно.
Вот тут чувак пишет, что iOS поддерживается.
Между компиляторами Roslyn и Mono нашёл только одно отличие. Моновский не понимает, что у bar должен быть тип Nullable<int>.
var foo = new[] { 1, 2, 3 };
var bar = foo?[0];
Компилятор из нового Mono 4.0.1 пока не проверял.