Member-only story
Confusing Threesome in Unity: C#, Mono, and IL2CPP
C#
To understand Mono, we need to look at how C# compilation works first.
Unlike C++, the output of a C# compiler is not something that machines can understand and execute directly. Instead, C# source code gets compiled down to intermediate(IL) code which relies on the Common Language Runtime (CLR) to actually run on the target platform.
Unfortunately, CLR was initially targeted to Windows platform only. So how does Unity manage to build our games for so many different platforms?
Mono
Mono is an open-source implementation of Microsoft's .NET Framework. Basically, a bunch of talented engineers implemented .NET CLR in platforms other than Windows. Power of open source. How amazing is that!
Unity used Mono as their scripting backend to support cross-platform development. So we can write our game code in one place, and deploy it almost anywhere.
Mono is indeed powerful, but it wasn’t a long term solution. Due to the amount of work and time required to develop, port, maintain new scripting features for so many platforms, Unity’s supported…