Handling platform differences
Unity does a lot for developers to abstract us from the many platforms you can deploy to. Most of the common functions, such as memory management, audio, controller inputs, purchasing, and so on, are all implemented with a single generic interface with Unity3D. This means you do not need to write separate code to play an audio file, or draw to the screen for each and every device or platform that you want to support and deploy to. It really is a big time-saver (ask anyone who has written their own engine just how much fun they had doing everything multiple times for each platform).
Unity does a lot, but it doesn't do everything. For the following fringe areas, you will have to do the leg work to get these features implemented:
- Social integration (Facebook and others)
- In-app purchasing
- Alternate physics or networking implementations
The list goes on. In a lot of cases, there are already pre-made assets on the Unity store that have done the hard work to build...