The trouble is, these come at the expense of the basics. Not so impressive is that the only supported method for sharing code between projects is copy and paste.
The engine is six years old. I'm not kidding.
Unfortunately, frustrations like that are common. I adopted Unity expecting to be there for the next few years at least; however my experience has been lukewarm.
It's a shame, because it could be a fantastic engine if they'd concentrate on polishing what they've got. But I don't get the impression that's the roadmap.
Lets compare the coding workflow in Unreal Engine 3 and Unity 3:
In UE3 you play the game, find something you want to change. So you shutdown the Game/Editor and go to the code. You code in some immature language called UnrealScript (I think there is a complicated way to use C++ too). Then you compile. Then you startup the Game/Editor again (this is slow).
Also the engine APIs are one of the best software designs I've seen in a long time.
And, naturally, there's no way to turn it off. Strictly speaking there is but it requires restart of Unity, not just the game, to reload code. Which is basically the UE3 workflow you describe.
You're right though; there are quite a lot of good parts of Unity - which is why I'm sticking around for now.
But I stand by my assertion that their focus on headline features is troubling.
The way I see it, Unity's primary market are hobbyist developers or professional developers who are making casual / indie / 2d games, and usually those games are on Mobile. Those types of people want less headaches and they want to be able to do common stuff really really easily. They don't really care about the high end features.
Unfortunately, Unity has terrible built in support for 2d art. Unity also zero built in wrappers for common Mobile tasks like In App Purchases.
Jumping through hoops to get your source control setup properly is a huge knock against it as well. This type of thing should just work out of the box.
You can't cut and paste components between game objects. When importing sounds you have to change the import settings on each sound individually because they don't support multi-object editing.
I use Unity professionally as a casual / indie game dev and while it is the best game engine for me, I can't help but think it could be so much better.
Edit: You should also exclude the Library folder from your VCS, because with metafiles enabled the Library is just a local cache.
The problem is that there is no method to build libraries and share them between multiple projects, since all the code needs to be under the Assets folder of each project. There is no support for classpaths.
If you update the code in one project, you have to copy the file to the other. Or have some equivalent method of doing so outside of Unity.
Prior to Unity 4, people were using symlinks to accomplish this, but Unity 4 disabled them on Windows to match the OS X behavior (this is described in the post I linked).
That's not quite true; they should split their commit so they don't span trees. But it's not a requirement, it just makes things a lot nicer.
You'll find that the Unity folk disabled symlinks to avoid thorny edge-cases and are trying to figure out a way to give you what you want, including simply allowing sym links but generating a warning message (and Windows devs are suggesting using a junction link -- no clue what that is).
It seems to me that the best option would be for Unity to expressly support the inclusion of folders outside the project tree in projects.
The engine being "six years old" is somewhat beside the point. Major changes and improvements have been made to the engine have taken place, and in some cases these have been as dramatic as "from scratch" rewrites.
It seems you disagree, but many people have popped up in this thread with the same complaint, and workarounds they should not have to be making.
I have no problem with the 3D rendering part of Unity, it's fully featured and works well. Especially for the price tag.
Agreed that age being bad is a nonsense metric. I was saying the opposite - it should indicate polished workflow.
Ticked off at one feature is not an accurate assessment at all. If lack of classpaths were my only problem, I'd be in love with the product.
I don't think it's a bad engine either. I was just expressing my concern for where they're choosing to spend their effort.
I'm saying that given the age of Unity3D, the basics should be 100% nailed.