Unity is the most widely used Game Engine today and I believe every Game Developer should take the time to learn Unity. It has a ton of amazing features to help you create a game. I will go over some of my favorite features to help you decide if Unity is the best game engine for your game. There is no best game engine. Every game engine is best at certain things that's why I will try to highlight what i think Unity does well.
Unity has a great Physics System in their engine. It is really easy to get Physics up in running in your game which allows you to have a prototype created very quickly. All you have to do is add a component to your GameObject and you have some Physics. Unity has has a lot of different collider types to fit any sprite or model you create. You can use a generated Polygon collider to get precise collision or use a capsule collider depending on you needs for the game.
Unity has a really easy to use Editor class that allows you to make your own custom windows and tools for Unity (Example of my own Editor Script I created in Unity). Any feature you see Unity use in the Editor can be leveraged to create your own tool. Labels, Input, TextArea, Arrays, Properties Selector, Sliders etc. There are a lot of different Methods inside of GUILayout and EditorGUILayout you can use to make tools to efficiently make games.
This is one of the newer additions to Unity. It isn't a new concept in Game Engines though. I really like the way Unity does Tilesets. It works perfectly with their currently existing systems. When you add a tile to the level Unity will regenerate collision for all the tiles. Tilesets are super useful if you want to make a 2D game quickly.
Example of collision for tile sets in Unity.
Entity Component Pattern
I'm a huge fan of the entity component pattern. It's the best way to think about objects in my opinion. When you think about an object you should think in terms of has-a in stead of is-a. When you are using components it allows classes to only deal with what they care about. When you make behemoth inheritance chains it gets harder and harder to maintain your code as time goes on. If you have all your code for audio inside one script it's a lot easier to go to later and change.
Since all components are a child of an Entity it also allows you to get any other component if needed. This is really useful for being able to quickly get the other classes that relate to an Entity. Because of the Entity Component System you can easily do something like var rigidBody2D = GetComponent(). Now the component has access to all the physics needed.
Unity has the best documentation in the game hands down. They are very thorough with their engine and almost every problem or question you could have can be solved looking at the documentation. It is also very easy to view the documentation for specific components; there is a book at the top of every component that takes you to the documentation page for that component. The documentation for Unity has helped me with my game countless times.
Unity's tutorials are really good starting points for getting you started with game development. Whenever they provide new features or releases they usually have a tutorial that accompanies every change. There is a great tutorial for 2D Tilesets created by Unity. There was also a really fun survival shooter that you could follow along and create.
Unity is Awesome
There is so much more in Unity that i didn't really touch on in this article. I highly recommend the Engine to anyone who is new to game development or looking to make a 2D game. You can make really great 3D games too but in my opinion UE4 is a better engine for 3D games. UE4 is also better for advance game programmers that know how to take advantage of C++ memory management.