I hated Unity for years, especially when I wasnt skilled at it.
Lots of programmers get stubborn, especially when they are young and make their own engines. Not that there is no value to having made one yourself, for understanding sake.
Years ago i did go deep into jMonkeyEngine, with a bit different attitude than others. I took the sources and refactored it heavily, specifically for tasks that i needed, threw away stuff i didn't need and added stuff that was missing.
What i couldn't implement myself was shadow mapping. It was just too much effort to get it right. Then i thought about how i would spend all my time implementing new graphics algorithms to no end.
After some time i tried Unity. Its very frustrating to depend on the editor even for the smallest things. I know there has to be a way to do something, but in Unity its some checkbox hidden somewhere. Then if i want to change some default behaviors i have to completely re-implement stuff, or to add some very hacky solutions on top of the engine.
When i worked with jMonkey, i read solutions and whitepapers from the net, read the GPU gems and implemented my own shader stuff. Working with Unity devolves into reading and searching its forums. Then comes the frustration, when the best solution that you find is some hacked trash, that you know for certain will lead to bugs or slow game or glitches. Or you will have to manually tweak objects in the editor, otherwise it won't work the way you need it. But you can't really dismiss the engine, since either you write your own complete solution or you nerf your game and leave that problematic feature out.
Its completely possible to do the second, to adapt features until it becomes manageable. Good game designers do that. But i get very frustrated, since i know that it would be easy to add that feature given access to source code of the engine. But if i have access to the source code, then why would i use it as it is, or use the editor at all, when i can just refactor the source?
The paid solutions you can get for Unity is another story. There are some well-advertised networking servers for Unity. There is one in Java, fine. Well it works on top of Netty.io. I can (i already did) make my own networking server with netty.io. They repackaged netty.io into a product, added various client libraries, advertising and support.
In the end i come back to Java and jMonkey and open source. jMonkey got lots of new features in meantime and Java itself got new features and new libraries. Github and the BSD licence is a wonderful thing.