I’ve developed commercial apps in Unity - VR stuff. From what I can tell you now having used Unreal over the last 6 years is the following:
- Blueprints are prefabs on steroids - they take a while to get used to them but they are so much more powerful. I’m not talking the BP code but just blueprints in general. As it happens I love BP as code too and some tasks are so much easier using this like adding debug, input events and so on.
- C++ is tricky and you do have to watch out for things like null pointers but UE C++ is not as bad as linux/windows C++ for general use. It has a garbage collection system for anything based off UObjects so it is most objects in UE.
- Materials…nothing like that in Unity. They are so powerful
- Niagara - the particle effects engine (which btw is not covered and I now know why - I have started a course with 35 hours of video on particle effects alone - this is how powerful and comprehensive it is)
- Animations - The blending between animations, animation blueprints (not really blueprint) and other stuff like Decision trees for AI - that’s again a whole other course. Shooter touches on all this.
The list goes on.
Your concerns regarding C++. They are warranted but the reason I love UE is because of C++. It’s more complex and you do have to be careful but it is also SO much more powerful. I have worked with C# since it was launched as a beta in 2001 and it is a decent language but it’s SOOOO boring. C++ makes you work for it just enough to make it feel so much more rewarding.
I could probably write another 10 pages or so on why UE over Unity. Unity is decent, don’t get me wrong, and for 2D, you have Unity or Godot. For 3D IMO, there’s only one choice and it ain’t Unity.
The biggest drawback of UE over Unity is the docs are shockingly bad. They used to be good but not so much any more.
That’s my 2p/c worth on the 2. I would argue, use what you are comfortable with and the best tool for the job. For me that is Unreal for 3D work, 2D would be probably Unity.
Hope this helps.