First, I want to say the most important quality of Unity: the big, very big amount of tutorials and any kind of info you'll need. This is a good point for Unity. But except for this, I don't like it at all, unless I was a big company like Blizzard.
Second, I want to say that there are plenty of very good engines out there, you shouldn't limit yourself to the two or three most famous.
For example, I used JMonkeyEngine, that is basically a better unity working with Java. I choose that because A) it's free, no licence problems when you finish your game B) Java/Groovy is my favourite language and C) it was good for the project I wanted to create.
Again in java there is LibGDX that is specialized on 2d environment.
It depends a lot on why are you wanting to create a game. If you want simply to create and sell something, you should look for a balance between the best solution for your project and something that isn't too much demanding on learning new things (for example, Unity is good if you are good in C#). Instead, if you want to learn new things, expecially things that you could spend on a job, you should stick either to the most famous (aka the most asked) engines, and this is Unity, or to an engine that is tied to other skills (for example, using JME or libGDX will teach you Java programming).