Ask HN: Why is UI design in Unity so hard?
I love Unity , but they’ve been working on UI frameworks for almost a decade , all fall short.
Still I need a 3rd party asset to make a decent UI I have found unreal’s basic ui editor to be fine. Unity is, in my opinion, just a poorly managed company with a good product in spite of it. They’ve failed to deliver on many things and the engine has glaring weaknesses, e.g. no networked multiplayer built in. I would bet on the engine generally getting worse over time as management tries to push non functioning new stuff. This is going to sound a bit hyperbolic but I haven’t been truly impressed with any new features in Unity since the introduction of PBR and dynamic indirect lighting in Unity 5.0. If your game doesn’t require cutting-edge technology then you would be hard-pressed to find a significant difference between the latest version and say version 5.4. If your game does require excellent optimization, rendering tech, etc, then Unreal is simply the better option. I tend to agree. I find unreal to have a higher initial learning curve but then generally be an easier engine to develop for. The core engine components have a wider coverage of basic game concepts like movement and network replication. The difference between fixed updates and tick updates is not a concern which is a trap for newbies. The engine source is available. Unity has better support for 2D games. And seems to be more mobile friendly. The asset store is better if you want to just pull in some other peoples stuff, which I find unpleasant for anything but photo realistic mundane objects. That is to say, I think Unity tends to be the best choice for making mediocre games, which is not to say that games made in Unity are intrinsically mediocre at all. I vastly prefer code over blueprints, and C# is much easier than C++. I've tried learning Unreal like 3 times. I still can't even get the build chain working Unity will never have halfway decent audio, networking, or ui; and not for lack of trying. The problem is that the one size fits all approach that made then successful falls far short of ideal in areas where there simply isn't a good general case for all of the possible use cases of unity. For UI, is because no single approach is suitable for all possible combinations of glance, grasp, touch, gamepad, mobile, PC, VR, adaptive web, and with all possible projections and rendering approaches. There may be some commonalities, but no package is going to be great at all those things. At the moment Unity has one size that fits no one though I'm building a graphics framework based on polygons set into a honeycomb (doesn't have to be a hexagonal honeycomb [0]) - basically you specify a coordinate system, then describe polygons as paths along those coordinates, and then embed text and media within those polygons (flowing the text, clipping the media) -- especially excited about flowing text around arbitrary paths (like you can do in Inkscape/Illustrator but in 3D) I'm targeting HTML/CSS because it's what I understand, but always imagined I could use the same markup to render in VR / game engines. It would be valuable to me if you described what primitives you expect Unity to give you, and how you wish it worked. Sorry if this is hijacking the thread since I don't have the answer, but I would love to have the answer eventually :) As you dive deeper into Unity, you realize more and more flaws. They promise the world, but only deliver marketable features rather than improving what they've got. The UI Framework is just one of those things. Some history: years ago someone at Unity got in love with one of those 3rd party assets, NGUI (if I remember correctly), they started reproducing it inside the engine and realized there could be problems of interest, so they contracted the asset developer, but relegated him to do boring stuff. The guy got depressed and left the company. Having worked with the older GUI system I actually like what they have now. But I'd have prefered them to adopt CSS. Now they bought all those inhouse tools from Peter Jackson they will be busy for years to come plugin them. Someone's dream in Unity is making movies, not UIs. The native UI framework and even paid assets are absolute rubbish. I've actively avoided working on these as I realised how difficult and unproductive it is. Especially Editor UIs and Property Drawers is the worst. They have so many projects on Preview (like their supposed new UI system) and has stayed like this for years... disappointing. I've thought on switching to Unreal for long time but never went with it knowing I have to learn C++ too and also Unreal feels very heavy compared to Unity. Some might suggest something like Godot but these kind of engines are still nowhere near the same level as the two giants and their asset stores are either non existent or at infant level. Marketplaces are important for me. FWIW I learned Unity and unreal blind with no particular familiarity with C# or C++. I’m a Python programmer for a day job. I have found unreal blueprints to be more than sufficient for anything I want to do, and honestly a superior choice because they corral you into best practice methods that actually use the engine’s built in components whereas you might accidentally end up trying to implement them yourself in Unity because a pure code interface isn’t very discoverable. I have dipped into C++ for some tasks involving a lot of arrays and what not. It wasn’t that hard to do what I needed to do. I definitely do not know the language but it’s all worked out pretty well so far. What's wrong with it? I prototype UI's all the time in Unity with no issues? In fact I love the anchoring system? I'm glad I'm not alone with my frustrations over Unity. I feel like Unreal is clumsy as well for new developers, so it's a choice between which shortcomings you prefer. Can't wait for a new engine to fill in the gap. Honestly this post is like complaining my new car only has manual windows. Everything else with Unity is pretty easy. I hate Blueprints or any visual scripting. In the long term Blueprints don't build any real skills, and I learned to program with Unity. Honestly this is my experience with ui in most, if not all, game engines. multiple reasons - it's hard to make declarative UIs with C# (recent versions try to make it easier, but it's still not there) - making UIs is hard, making game UIs is even more hard because there is no rule to make a UI, it depends on many factors (art style, game genre, platform you target, input you support) - making something customizable, serializable and performant is very hard you are better making your own that suits your need, hence people rely on 3rd party solutions that exactly solve their use case I don't get why they don't make HTML-compatible frames you could just rotate in 3D. in my mind - if you said UI you said HTML. (and JS and CSS) because web tech sucks, it performs poorly, it's even more true when you start to target ressource constrained devices (mobile and consoles) 8ms is your framebudget for 120 FPS Whats a better UI framework? Been a unity game dev since I learned to program properly so I don't even know any better. We embedded a web browser and wrote our UI in React for a previous VR project :) Sounds like a nightmare anti-example, Godot's is also horrible, and Unity vs Godot are the two main options for 2D development :( I like Game Maker Studio 2 a lot for 2D games. I'll have to check it out, I used it as a kid but not in years. xcode UI Toolkit is a big improvement over the previous ones, at least. Try godot instead. Godot has potential, but it’s no where near Unity in terms of ease of use. With Unity I can typically buy an asset for whatever I need, but with Godot I might need to implement it myself. Unity has tons of problems, but better off with the devil you know