Я использую Unity3D v4.2.2f1, и версия MonoDevelop, с которой он поставляется в комплекте - v2.8.2.
Я вижу, что есть случаи, когда код C# компилируется в Unity3D, но не в MonoDevelop. Например, значения по умолчанию для аргументов метода принимаются Unity3D, но приводят к тому, что «Настройки параметров по умолчанию не разрешены (CS0241)» в MonoDevelop.
Общий совет, который я нашел в Интернете, - не пытаться компилировать из MonoDevelop. Хорошо, но я очень хочу понять, как возникает это несоответствие. Я думал, что и Unity3D, и MonoDevelop компилируют С# с помощью Mono? Дело в том, что Unity3D поставляется с двумя версиями Mono, одной для себя и одной для MonoDevelop? Если да, то почему?
Пример первой строки метода, который компилируется в Unity, но не в MonoDevelop (бит, который не компилируется в MonoDevelop, но компилируется из Unity3D, — это присваивание '=false' setNative):
public static void SetUnityVersion(string path, bool setNative=false) {
...implementation...
}