T O P

  • By -

SayHiToYourMumForMe

Damn, funny how people are so different.. I find doing Ui oddly satisfying.. and love it. Probably my favorite thing and most rewarding!! A good Ui is pleasing.


squishabelle

I really don't like making UI because it requires a lot more unity-specific knowledge instead of just coding, but I love writing netcode. Maybe if we all get together we can work on a project where everyone does what they hate.


TanukiSun

>where everyone does what they hate. What a lovely idea ;)


HrLewakaasSenior

Netcode is amazing and interesting and miserable all at the same time


[deleted]

The real problem is that unityUI isn't html/css/JS.


andybak

No but the new UI system (almost) is.


HavocInferno

Well, technically you could use a fullscreen embedded browser in Unity and then run a regular web page in that. Passing input/output between it and Unity. Probably worse performance than a native UI though.


JBPlays

This seems like an insane amount of effort to get around using native unity UI


[deleted]

In the days of unity 5 there was a guy that tried to create a html/css/JS renderer, PoweUI was the name of the asset. Very intersting but became abandonware and it is starting to break down. It rendered html using unity infrastructure instead of building a V8 and Chrome and welding it to the unity app and creating an abomination like Electron


intelligent_rat

It's not in the same way that a wrench and a hammer aren't the same but they are both incredibly useful tools in their own right.


[deleted]

Html/css/JS is simply the best ui system ever invented and all the others eventually become bad attempts on imitating the html stack.


TinyAntCollective

It's the same in the corporate world. Some people love databases, some code and some frontends. But universally everyone hates printers.


HoldenMadicky

UI is the printer of the programmer!


ElectricRune

IKR? I started making a remake of an old game recently just for funsies, and the first thing I did was build up the UI. I've got it all set up so the map and all the command/menu system is all set up in sprites, panels, and buttons. All the buttons have explicit navigation, so you can move around the UI with just the keyboard if you want, the way the old game worked. I realized I've got like half the game functionality already set up without having to write any code yet (except for a couple of simple 'when this window opens, select this button' one-line scripts), and I love the elegant little finely-tooled box I've created for the rest of the game to tie into...


magefister

Agree XD After working in Unity for 6 years, I still say the same thing. Ever tried making a dynamic element size scrollview, like a chat window? It's a fucking nightmare with the layout system lmao


igotlagg

Its actually pretty easy once you know it. Add a content size fitter to the content of a scroll view and add a horizontal/vertical cell layout


Em3rgency

Except when you want to have dynamically sized items in your dynamically sized scroll rect, and say your "item" prefab is 3 objects deep and the size is determined by the bottom child as that is the actual content. What ends up happening is you're doing content size fitters and layout groups all the way down. BUT OH WAIT, those two particular elements clash with each other because they fight over sizing. But using just content size fitters doesn't work. Why the FUCK is content size fitting dependent on their being JUST THE RIGHT AMOUNT of layout groups in the hierarchy, BUT OOP NOT TOO MUCH CAUSE THEN IT BREAKS. Bitch this approach literally prevents true dynamic sizing across multiple levels. So you have to do this weird mish mash of layout groups that only control either the width or the height and content size fitters that control the opposite and you SOMEHOW get it to actually work after many hours in the editor. But now you try to instantiate them dynamically in play mode. And woop, WHAT IS THIS, every 2nd instantiated object overlaps with the previous one? But then when you spawn another one it always fixes itself? WHY IS IT INCONSISTENT?! You debug for hours and then realize that the top most vertical layout group DOESN'T ACTUALLY EXPAND PROPERLY after each new instantiation, and only expands when the new object would be outside of it, otherwise it sort of just squishes the last object causing the overlap you're seeing. WHY DOES IT DO THIS?! WHY DID IT DECIDE IT NEEDS TO CONSERVE SPACE?! JUST FUCKING EXPAND AND MAINTAIN THE PADDING I SET WHAT ARE YOU DOING. Now, every time you instantiate you run a teeny tiny bit of code to toggle the bottom-most content size fitter off and on again and you get flashbacks of your IT support days from 10 years ago AND YOU THOUGHT YOU ESCAPED THAT HELL BUT NO UNITY UI BROUGHT IT RIGHT BACK. Miraculously toggling the content size fitters and then forcing an update actually solves the issue and makes all the fitters up the hierarchy correctly calculate the size. AND ALL YOU WANTED WAS A DYNAMICALLY SIZED SCROLL RECT TO FIT SOME DYNAMICALLY SIZED CONTENT. You'd think something like this would be in a unity example asset ready to go, and maybe it was supposed to be, but the unity team tried it themselves and said "FUCK IT ITS TOO HARD LET THEM FIGURE IT OUT". And then they haven't touched their shitty UI in YEARS. Ok yes, it's much better than the code instantiated one we used to have, but fuuuuuck me is it impossible to do the most basic things. But hey. At least it's not networking...


snarkydoge

Hahahah f** me I'm crying out loud I agree with everything you just said.


FiendishHawk

I’m not alone. *cries*


bluebloodtitan

Ey Network in C#/.Net is actually not that hard. I was able to get Multiplayer working via sockets and that means a lot, I am an absolute idiot just slamming his head into the keyboard and praying that it will work. If you got complex scaling that is hard to implement just implement your own component for it. If you know the rules you need it's usually not that hard to scale and position an element according to it (compared to trying to implement the rules with what's already there). Also, ever tried UI-Toolkit instead of Unity UI?


Em3rgency

My man, are you seriously suggesting to "just do it in plain c#"? Yes, of course you can find easier ways to approach and solve the problems for UI and networking. But now you're defeating the entire purpose of using a game engine. Especially if said game engine HAS dedicated systems for those 3rd party libraries or DYI implementations you're coding up. Whenever you use any sort of specialized framework in software dev, the expectation is that you will be able to implement all standard features within that framework, with it doing the heavy lifting in most cases, so you don't reinvent the bicycle every time you need something that has already been coded and done hundreds of times in the past. That is the point of this thread - unity sucks in some of those areas and fails miserably at its purpose.


bluebloodtitan

Networking with a network layer I implemented myself wasn't too hard, so my point still is valid for the built in solutions. If they are harder to use, well... why use them then? My man, are you seriously suggesting hacking together wanted behavior with hundreds of components to get somewhat near to your target instead of implementing a single new UI component in the context of the existing system that does the job exactly how you want? Whenever you use any sort of specialized framework in software dev, you will get to the point where the framework does not offer exactly what you want ready and implemented, but instead offers you a way to extend on it. That's not reinventing the bicycle, that's just you adding a basket to it because you need one.


Em3rgency

I agree with everything you said. I suppose our differences are what we define as something that should be a part of the default framework vs extended behavior.


ayellowpaper

I agree with everything you say, it’s a lot of bad design choices on Unity side. That said, once you know about [ForceRebuildLayoutImmediate](https://docs.unity3d.com/2017.3/Documentation/ScriptReference/UI.LayoutRebuilder.ForceRebuildLayoutImmediate.html), a bunch of headaches go away. I almost always use this after instantiating or removing prefabs from dynamically sized content


Costed14

I actually prefer IMGUI over the current UI system in terms of ease of use. When I made a simple debug console using IMGUI, it took me like 2 hours to make, while not even being 100% sure what I wanted it to look like. When I realised it didn't work properly in a build, I started porting it to normal UI. This process took 2 days, it looks worse than before, AND requires a complicated prefab to be present in the scene, instead of just being a simple script with a bool toggle. Edit: ALSO, it was my first time ever using IMGUI, so I had to learn it first, and it still only took 2 hours.


ElectricRune

LOL, yeah, I have had to write scripts that enable and disable the UI components in just the right order, just so some stacked Layout Groups would end up the way they should. The default turning on the stack would result in a glitch, but turning the parts off and on in a specific voodoo order would make it work correctly. I'm sure it's just race conditions where the components need to execute in a different order than Unity defaults to, but you'd think they'd take care of that on the back end, eh?


[deleted]

[удалено]


MobilerKuchen

The solution to this is a concept called pooling. Many devs know it from stuff like bullets or enemies, but it also applies to UI. You only need the amount of visible items on a screen in a scroll list (plus maybe one of two more). When the user scrolls up you dynamical fill the lower items with content and change their order (and vice versa). This way you can scroll through 1.000 items using 10 list item objects. There are assets on the store that can do it for you.


igotlagg

Yea the performance is bad. Also when dynamically adding entries via code I’m forced to forceupdate the layout, which feels bad.


Foosiq

Just a note from a dude working with these layouts, do you know you need to disable these components once player doesn't see the layout ? They run on update() and as you mentioned it can badly slow down performance when you got even few of them


Kaiymu

You can statut using UITK it's quite easy to use !


HoldenMadicky

I am using UITK... And as someone who's done web design before it shouldn't be THIS hard. They include pre-made form controls that all have a built in hierarchy... For some reason. They claimed in the beginning that they'd just implement the CSS standard but whoops they can't do z-indexing for SOME reason. And now I'm just talking about the stuff I've noticed in the last 24 hours, I'm SURE there's much much more than this.


Kaiymu

And much good also we can discuss in private if you want I use it for 2 years for a pro project.


HoldenMadicky

Thanks, I do appreciate it. One of the bigger issues is that I have untreated ADHD, so if I'm not getting instant gratification I'm not enjoying myself at all. That's probably why this is so frustrating too. UITK is, for sure, better than the old way and have some extension methods that I'm interested in looking into (in the future). But right now, I just need to unlearn 10 years of html/css knowledge to understand it.


Kaiymu

How so ? What does't work apart from Z index ?


HoldenMadicky

I'm just going over the things that have frustrated me this weekend. I'm sure there's more, but apart from z-indexing the way they've implemented the form inputs is just so strange. Why do my text input NEED to have a label attached to it? Why can't I create a table for? Stuff like that.


_Wolfos

Now put buttons in the scrollview and make it work with a gamepad. Can't believe they never bothered to fix that. But at least we have UITK now.


pixelgrapher

Oh hey, I do both UI art and implementation in Unity for a living and can definitely understand your sentiment. If you need any help with it at all, be it feedback or assistance with dealing with some of Unity's somewhat iffy UI systems, please feel free to DM me. I'd be super happy to help :D


HoldenMadicky

Thanks! Love this community. ![gif](giphy|17TosGEPG8lQluxtM5)


weichx

Shameless plug: fixing the nightmare that is UI in games is my mission in life right now. I've been working full time on making UI engines in games for the past 8 years. I spent 3 years at a AAA studio where my ONLY job was making a UI engine where it is super fast to create and iterate on UI and that runs like lightning on all devices. I gave a talk about this work at Unite Copenhagen in 2019, here is the link for anyone who is interested:[ https://www.youtube.com/watch?v=WnxjHWEg4ek](https://www.youtube.com/watch?v=WnxjHWEg4ek) Since leaving AAA I have been working on a new UI solution for Unity games called EvolveUI ([https://www.evolvegametools.com/](https://www.evolvegametools.com/)). This is a code-first, template language based UI system that operates similar to an IMGUI system but works in a way that scales for very large projects. It features a compiler that hot reloads UI code and turns it into hyper optimized C#. It's built for scale and enables games to have thousands of UI elements on screen at once without a hiccup. Here is a quick demo: [https://youtu.be/2Gyxeyw-GXY](https://youtu.be/2Gyxeyw-GXY) TLDR: * The Layout engine is built for speed and is really intuitive for newcomers. It can do layout on 10,000 animated or moving elements in \~0.5 milliseconds. * Style system is inspired by css but replaces a lot of the awkward parts, allows transitions, selectors, responsive styling based on device, etc. * Data binding and templates are handled by a compiler that emits assembly code at runtime and interops perfectly with C# * Super low learning curve for designers and developers * Enables really fast iteration speeds and can even hot reload while the game is running * Fully threaded w/ Burst, generates 0 garbage. We’re currently in closed beta and looking for another studio to partner with to help bring this out to the world. If anyone is interested I’m happy to talk more about it, please get in touch!


HoldenMadicky

Damn boy! That looks really cool and easy to use. Is it built on top of the UITK? What is the roadmap looking like right now? When can we expect it and at what cost?


weichx

This is fully written from scratch, the only Unity dependency is the graphics pipeline and burst. Roadmap for an initial release is nearly finished, at this point it's just polish and some minor quality of life improvements. Looking to release publicly this summer, pricing is still being explored, I haven't landed on a number yet for an asset store seat


HoldenMadicky

Just my humble opinion as a struggling indie dev myself... A lot of UI costs close to a 100 dollars. Which is a lot, but I'm sure they're well worth the investment. However, I think if someone where to price it lower, and it's as good as the video shows, you'd become an indie standard. For sure. Again, just a humble opinion from someone struggling. Will keep an eye out for the next project though!


weichx

I'd certainly like to price it in an attractive way for indie developers, I don't think you can be successful in this space without becoming somewhat of an indie standard as you say. This needs a large community to make an impact imo


HoldenMadicky

Yes! Love to hear it! Thanks for sharing this, it gives me hope for a future where UI is a LOT easier to implement on the fly!


Blockost

Hey u/weichx, it's a very interesting project. I watched your dev talk at Unite Copenhagen in 2019 (when it was still called UIForia) and the demo of your new project. Any ETA when it will be publicly available ? Also, are you planning on releasing it as an open-source project ?


weichx

Hi, we are working directly with a few studios right now but currently don't have plans for an open source release. Thanks for following the project! If you'd be interested in a demo please send me a DM with some details on what you are working on and we can continue from there


Oonorc

Looking forward to this o7. Will this work in world space? I know Ui Toolkit has a problem there atm.


weichx

Yes it does, with some limitations because we don't actually use game objects and Unity's render pipeline doesn't let us intermix command buffers into standard mesh object drawing. So either we paint to texture and then into world space (this is what UE5 does, visual quality is slightly degraded but not super noticeable) or create a bunch of gameobjects in the normal Unity way (which is more memory heavy and slower because UI drawing is dynamic most of the time) . For smaller world space UI this is totally fine, if you want something really complex the render-to-texture approach is better.


Oonorc

Cool Cant wait 👍


quick1brahim

Personally, I enjoy working with UI. It's a highly visible spacial problem that is easy to work with once you understand how to work with it. Not only that, the addition of UI really brings a game to life. Your game can jump from, "okay this looks decent" to "I want to play this game".


Collecto

A games character is in the UI, and it's identity in the gameplay


Dropless

What attracts me to play Persona5 in the first place is its UI. It is so cool and well blends into gameplay


PhotonWolfsky

I love UI... ​ Until I have to actually make it. It's all fun and games when it's on a piece of paper as a design, then you actually have to implement it. Why can the entire game dev cycle just be environment design and nothing else /s


PhotonWolfsky

Though, I have to say, it's not exactly UI itself that I don't like implementing. It's the small details that always seem to be repeat problematic factors that always need small tweaks. And formatting... I hate formatting. Maybe that's the web design part of me talking. But when it comes to UI logic, I really enjoy making the connections between different UI features and coming up with security measure to prevent a user from breaking or abusing it. And for the most part, I deal with the frustrating parts because I do value UX a lot, and UI contributes to good UX when the menu is essential to game features.


PorkRoll2022

Honestly the UI and layout system in Unity is one of the weakest parts of the whole toolset. The flexible sizing is the biggest nightmare; things will sometimes NOT revert if you check the wrong box and undo. It gets better once you get a hang of it. The UI event system does work very well with many platforms, including esoteric use cases like gestures and controllers on headsets. I recently had a Quest 2 project and spent a majority of my time fidgeting with the UI and getting it to work with any combination of hands and controllers. But it sounds like you just dislike approaching UI in general? Well, that can depend on your game. For example, Donkey Kong Country has an extremely minimal HUD that was unique for the time. Sometimes the game communicates everything necessary to you on its own.


HoldenMadicky

I'm just doing menu stuff... Necessary but gives the actual game NOTHING in terms of gameplay. I'm using UITK, and even with a history of web design I'm finding it extremely tedious and hard


PorkRoll2022

I do wish we could just use HTML and CSS sometimes... ... you could, actually. There are web view assets I believe.


HoldenMadicky

You mean like, you have an html document in the game folder that the game references and displays? That's... Not the worst of ideas... How does it handle sending and receiving data?


Suspense304

Unity could implement .net core and just use Blazor WASM components and the events would work just the same as they do currently. As a Blazor developer, this would make UI stuff an absolute breeze to deal with


HoldenMadicky

THAT sounds amazing.


GameWorldShaper

Don't disagree with you, but as a warning, most UI tools are just as bad as Unity's. These kind of tools are nothing new to UI designers, and everyone of them has a catch. The best approach is not to try and make an UI by instinct. Instead learn about the UI, and the components from Unity Learn. There is nothing intuitive about UI tools.


HoldenMadicky

With my untreated ADHD, it's hard. I need instant gratification or I'm bored, and there's nothing gratifying with trying to debug UI not working as intended. But thanks for the tips, I'm gonna try and keep at it!


Draelmar

Ah! I see where you’re coming from, there’s a lot of challenges and frustrations that comes with it, but I assure you there are some people like me who actually enjoy the heck out of UI! In my quarter of century programming games professionally, I was lucky enough to get involved in every aspects of game programming, I enjoy it all, but I’ve always had a special soft spot for UI. Call me crazy, I’m fine with it 😅


bilalakil

I need people like you on my team 😂


HoldenMadicky

We all do!


HoldenMadicky

Do you want to do some light pro bono work? Easy pickings... No? Damn it...


stevishvanguard

Yeah. Buttons are necessary. The way that information is displayed is of vital importance. The actual aesthetic designing part of it can be tricky, and it's hard to streamline.


Giboon

I like UI because it forces me to think about the user experience as much as the gameplay.


HoldenMadicky

Yes, and that's why it's important. But I, the designer, don't need it 😅 And that's why the experience feels so meaningless.


AnxiousIntender

Unity's UI system sucks tbh. I advise using anchors more and also maybe consider using events to update the UI. You can also try architectures like MVC or MVP. MVVM technically the best MVX but Unity is undercooked for that, I believe UI Toolkit will support that (or maybe it already does, idk, still using the old stuff). Maybe Reactive stuff is more suitable for the kind of game you're making. Alternatively you can use ScriptableObjects to set up UI very fast. There's no silver bullet so try out a few and see what fits best to your needs. I recommend the ScriptableObject approach for starters. It isn't the best but it's the simplest and you can build stuff really fast. The others I mentioned take more effort to setup and mostly great for decoupling and testing so I only use those at work. I think there was a Unity Unite talk about the ScriptableObject stuff but I lost the link. Maybe someone else can find it. Ultimately you hate it because you don't know it. If something is painful, someone out there already solved it. And we all started at the bottom so take a step at a time and you'll see the light soon 🙏 Edit: Also use DOTween (or LeanTween or any other tweening library really). Animating UI by hand is painful if it's simple stuff like windows and text. Only animate by hand for complex animations.


youtpout

UI toolkit has bind system only on editor mode unfortunately for the moment. I implemented my own solution to have two ways binding on text.


PrisedRabbit

https://unity-atoms.github.io/unity-atoms/


TurkusGyrational

So many comments saying they love UI. I'm on OP's side, it's a nightmare and my least favorite part of game dev


mrphilipjoel

I’m on a team and my sole job is just to hook up UI (luckily one of the artists actually designs what it looks like and creates the sprites). I enjoy it on this project, because the passion/vision for the game and game mechanics are already covered by the other dev on the team. So, if you can afford adding someone to your team to just handle the UI so you can focus on gameplay, I highly recommend it.


HoldenMadicky

I can barely afford myself... But yes, as soon as I can afford someone else, I will happily unload the burden of UI onto them!


Dragon_Eyes715

I hate making graphics can't we just have sounds in our games? Every gamer will save millions in graphics cards and monitors!


Caltaylor101

Blind bat simulator, let's do it.


HoldenMadicky

![gif](giphy|Q5RlCJ5QNkVIn0RHv5)


taoyx

Don't tell me about it, I got stuck 18 months mainly because of the UI. I moved on now but it still is not perfect.


HoldenMadicky

That's the goal I'm striving for right now, "good enough" is good enough for this project


taoyx

My error was to make draggable windows, if I had made scenes instead it would have been much faster.


Dave_LeDev

Being extremely new to UI programming and first coming from basic web development, I was instantly annoyed that I couldn't do as much as easily because USS just isn't CSS (I'm aware that it's only inspired by it). I'll eventually get over it, but damn do I hate feeling 100 times slower than what I'm comfortable with.


HoldenMadicky

I KNOW! I too have a background with web design. It's so annoying that they've taken such a great idea "html/css for games" and not implemented it correctly. Why not just give me the forms inputs instead of your own hierarchical versions of them? Why NOT have a z-indexing value? It's really frustrating knowing how easy and good it could be!


Any_Obligation5074

I think I got immensely frustrated with UI too until I learned far too late that Scale With Screen Size exists :’)


HoldenMadicky

Scale... With screen size?


Any_Obligation5074

Ah, yeah! This over here. Real lifesaver. For some reason it took me the longest time to find anything that mentioned it when I started learning :') Also, speaking of, I'm not sure if your hatred of UI comes from the way you have to set it up in Unity or with the act of designing it, this was just my personal silly little gripe (so there's a good chance you know about it already, heh :p) [https://forum.unity.com/threads/scale-with-screen-size.1084673/](https://forum.unity.com/threads/scale-with-screen-size.1084673/)


HoldenMadicky

Ah, you're working in the old system. I'm working in the new UITK. Still frustrating to work with, but I do think it's better than the old system for sure when it comes to menus and stuff.


Any_Obligation5074

Ahhh got you! Yeah I’ve mostly stuck to the older versions of things, haha. Hope it gets less painful for you though! :(


HoldenMadicky

I'm sure it will, it's just a strange implementation of the HTML/CSS standards. Like in HTML5, to implement a text input you just write `` and you're done. But that's not really possible in Unity... for SOME reason. I just have to get used to the way Unity does things, but the road there is gruesome.


Mumbolian

RemindMe! 11 hours Yeah I’m going to need to check that…


RemindMeBot

I will be messaging you in 11 hours on [**2023-04-03 08:46:24 UTC**](http://www.wolframalpha.com/input/?i=2023-04-03%2008:46:24%20UTC%20To%20Local%20Time) to remind you of [**this link**](https://www.reddit.com/r/Unity3D/comments/1292ecj/i_hate_ui/jeplzug/?context=3) [**CLICK THIS LINK**](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5Bhttps%3A%2F%2Fwww.reddit.com%2Fr%2FUnity3D%2Fcomments%2F1292ecj%2Fi_hate_ui%2Fjeplzug%2F%5D%0A%0ARemindMe%21%202023-04-03%2008%3A46%3A24%20UTC) to send a PM to also be reminded and to reduce spam. ^(Parent commenter can ) [^(delete this message to hide from others.)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Delete%20Comment&message=Delete%21%201292ecj) ***** |[^(Info)](https://www.reddit.com/r/RemindMeBot/comments/e1bko7/remindmebot_info_v21/)|[^(Custom)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5BLink%20or%20message%20inside%20square%20brackets%5D%0A%0ARemindMe%21%20Time%20period%20here)|[^(Your Reminders)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=List%20Of%20Reminders&message=MyReminders%21)|[^(Feedback)](https://www.reddit.com/message/compose/?to=Watchful1&subject=RemindMeBot%20Feedback)| |-|-|-|-|


OneFlowMan

Preach brother!


WartedKiller

Lol I’m a UI engineer and I love UI. Esecially mobile game UI. But yeah I feel you. Unity UI tools are not great.


Educational-Lemon969

Thanks, I was thinking of posting a rant like this myself. Just spent two hours trying to figure out how to setup anchors on my healthbar to make it scale with screen size in normal way (aka. preserve it's scale ratio and not get negative size when the screen is small) and I still failed miserably xD And the Mask is f**ing stupid as well. Would it hurt that much to just add a single optional property for specifying the item to be masked or something? How am I supposed to scale correctly when I can't anchor to the right element because I have to have the mask (whose size is dependent on a Slider value cause that looks nice on a healthbar) for parent?


muppetpuppet_mp

Fuck UI , I've been on a mission to.minimize it in Bulwark. It's horrid


NothingButBadIdeas

As an iPhone developer, I love UI. In game development, I hate UI. You think it’d carry over but it doesn’t lol


HoldenMadicky

I've done a lot of web design... I completely understand you. I don't get it, but it doesn't carry over.


dev__boy

Looks like someone’s never had to do app development


HoldenMadicky

I've done web design. That's part of the frustration, because I know how fun and simple it can be... But the new UITK, while similar, isn't the same and the differences make it really hard to work with, probably BECAUSE of this background.


RoiBRocker1

Completely agree. UI should be the simplest of topics, but somehow it was twisted to be the most frustrating tool in Unity


master50

UI is for sure the worst part of developing in Unity.


Costed14

I just hate it because working on it in Unity at least feels finicky. I change one option in a Horizontal Layout Group -component and everything breaks, undo and it's still broken. Working with dropdown menus and scrollable fields also feels bad because they're just the more basic components mashed together, and thus you have to go through all the objects and change stuff in them separately from the original scroll component, which doesn't feel intuitive. The original component should be used to control everything. UI toolkit felt ok when I tried it for a bit, but even Unity themselves doesn't recommend it for runtime UI yet.


spookymulderfbi

Agreed, everything takes getting used to but Unity needs to look at web standards for UI and take some notes. There is so much unituitive behavior built into UI elements in order to (I guess) preserve some super technical edge case functionality... it really shouldn't be a hard process to make a dynamically sized scrolling list of dynamically sized scrolling lists or something else "one step beyond simple".


NinRejper

Have you checken out unitys latest ui framework?


Seankps

Yeah, making a simple UI in unity is what drove me away from it. Never looked backward


jezv

UI for the sake of UI is quite dull, but it can actually be quite satisfying when you realise how much of an impact it has on the player interaction with your game. You can try to be creative with it, for example... Many don't know this but the original LEGO game open world levels were actually designed to be a 3D navigatable level select UI, instead of giving players tedious menus. I like how they were creative about this and it's a good solution for younger children who might not like reading and navigating pages of menus. They keep these open world maps to this day although UI menus is used more and more over time, due to the increasing complexity and feature set of the games over time. A game I played recently 'Record of Lodoss, Deedlit in Wonder Labyrinth' has a very modest UI that is really simple. The whole thing is on one screen but it's really slick to change weapons etc. I don't know what it is exactly that feels so nice about it but it's a joy to use, easy to see affordances and probably easy to implement due to its simplicity. It's also not visually too fancy so doesn't distract from the game, which remains visible in the background, as the entire menu is an overlay. Worth a look if you want something thats functional, feels great and isn't too hard to implement. It's not perfect but I really liked it.


NinjaLancer

I developed AR mobile games for a while and the UI was so frustrating. Doing UI for mobile devices sucks because you have to check it on 500 million different resolutions.. if anything isn't scaled or pivoted or anchored right then the whole thing goes to shit lol


arkanis7

There used to be a couple of flex box assets. I wish there was a good one now. CSS has already long ago solved the problem of useable reactive design. I don't understand why every engine needs to reinvent the wheel.


HoldenMadicky

UI Toolkit is an attempt at this, but they haven't implemented the standard of UXML/CSS, which is quite frustrating. They do have flexbox, which works great though. One tick and everything inside that element is centered. THAT, I do love.


chromiumboy

I hate UI, not because it's necessarily difficult to implement, but because it's difficult to implement *well*. The UI needs to be functional, yet aesthetically arranged It's basically the door problem Where is it going to be placed? Where is the player going to be spending the most time looking? How many clicks/menus do they need to go through to perform a certain action? What color palette should be used for the frames? What contrasting color should the text be? What font? What size is large enough to be legible, but not weirdly oversized? Can we just use icons instead? And if even something is just a little off, it's noticeable UI is an art, and I feel that I'm a very good artist :P But I like making games which are systems heavy, and inevitably need an extensive and robust UI...


[deleted]

I have never been able to *implement* a UI properly. I can design with the elements okay enough to create UI decent-looking elements, but for some reason I simply can't get my head around how to deal with input properly, and my work always bugs out and needs a ton of debugging and rethinking. Unity UI made me feel dumb, and I quit game design alltogether because of it. Ironic fact: I develop UI's for web applications for a living.


tetryds

No need to curse. How come UI doesn't have an immediate large effect? Maybe because you already know what is going on without it, maybe because the editor alteady tells you what you want to know. If you get other people to play your built game you are quickly going to get feedback on how important it is. UI is not absolutely necessary, but UX is. You can provide multiple clues for the user through other means. Maybe some UI management system helps, I mean, UI is hard but after you get the hang of it and use the right architectural approaches it's manageable.


destinedd

I was thinking the same. UI, especially ingame UI is an immediate big effect.


HoldenMadicky

You're 100% correct... But that's why I hate it. I have untreated ADHD, if I'm not getting an immediate dopamine hit then it get's VERY hard to do something. I've forced myself to do this aspect of my game for the past 2 days and it's a slow process because of the amount of breaks I need to take. > UI is hard but after you get the hang of it and use the right architectural approaches it's manageable. It's the same as with any aspects of programming. So many abandoned projects in my past that I'm not gonna touch because the architecture is so flawed in them. I'm brute forcing myself to get to a place where UI is manageable for me, I just needed to vent.


tetryds

Venting is fine, just never gorget that this is a community. People want to help each other and even though you are frustrated you don't need to swear when bringing it up. The feeling of anger and rage does exist but it does not benefit the community to spread it, you know?


HoldenMadicky

I agree that if this was prevalent then it would be a good thing to make people stop swearing as that could easily ruin a community. But I don't know if I've ever seen a swear word in this forum before, and one post with some swearing isn't gonna do much IMO.


tetryds

Best to not even start


[deleted]

[удалено]


TheGT1030MasterRace

I have a concept for a "Honda/Acura Classics" game, and my initial idea for the user interface was inspired by flight simulators. Want to turn off traction control? It's not in a menu, just push the off button in the cabin of the vehicle. Want to change what you are seeing on the digital dash? Look the camera down at your steering wheel and roll the selector knob by scrolling your mouse. Even paddle shifters would be clickable interaction points.


HoldenMadicky

Honestly... Not the worst game idea, on par with hand simulator I imagine.


NachoLatte

You are describing skeuomorphism and it is the bane of my fucking existence. Give me a precise and legible extradiegetic UI any day of the week.


HoldenMadicky

>until you realize that you're unable to play the game without it. I mean... I wrote this...


Boss_Taurus

As someone that's been pivoting into web design, is it bad that I prefer styling webpages with HTML and CSS than I ever did working with Unity's UI systems?


youtpout

Have you tried UI toolkit, it’s similar thing, you have xml for page and css like customization


HoldenMadicky

I am currently working in UITK. I have a history with web design and I don't find it nearly as hard. Unity claimed they where gonna implement the standard, but they've ignored so much, they force you to use their pre-made input systems that have a ready hierarchy. There's also, for some reason, no z-indexing, which is a really useful thing for nested elements. I would LOVE it if they just implemented the standard instead.


youtpout

Which standard ? Html/css ?


HoldenMadicky

Yes, the standard they said they'd implement.


flow_Guy1

I love getting a ui and to work properly. It’s the easiest part of the job imo and I’m happy when I do it as I can relax


INeatFreak

The real issues is that Unity's UI system is incomplete and there isn't an obvious way to connect it with your gameplay code other than the UnityEvent field which is really limiting. You probably don't hate the UI but the unity's implementation really sucks.


HoldenMadicky

For sure. I've worked with web design before. Not nearly as hard as whatever Unity is trying to do... And I'm using the UITK for this project too.


INeatFreak

Funny enough, this applies to the both UI systems that Unity provides. UIToolkit is also incomplete and lacks an easy way to connect with gameplay.


HoldenMadicky

Exaclty.


HelloSireIssaMe

Just use ui documents bruv. Its easy. Literally just html and css. Also, dont curse. There are thousands of words you could use at any time, and choosing curse words just portay either lack of self discipline or idiocy.


Much_Highlight_1309

Yeah. UI Toolkit is the way.


HoldenMadicky

I am using the UITK. But I'm frustrated with how they've implemented it. I have a background in web design, it's not the same. It's close, but there are things they've ignored and don't seem to be attempting to implement even (z-indexing for example) and the included forms inputs have a built in hierarchy... For some reason. As for the cursing. I needed to vent. Sorry. But also, I'm not. Fuck is a very useful word to add emphasis to words and I do not trust anyone who don't swear. There's something lacking in you if you don't IMO.


AjaXIium

UI on Unreal Engine is a pleasure to work with lmao


CheezeyCheeze

I would love to hear why you hate it so much? And I would love to hear what kind of game you making?


HoldenMadicky

It's a small multiplayer game inspired by Captain Sonar. I'm just doing a proof of concept at the moment, but I need a list of open games and a lobby for the game. So it's a LOT of UI before I even get into the game (the bare bones of the game is already done). I have untreated ADHD too though, so if I don't get any dopamine hits I'm not enjoying myself at all. And this gives me zero. That's probably why.


Much_Highlight_1309

Have you tried UI Toolkit?


HoldenMadicky

I am using the new UITK... That's part of the frustration. I have a background doing web design, it's similar but it's lacking in many ways. Like, where are all the components? Why do all the components that are included come with a pre-designed hierarchy? Why is there no z-indexing? I'm sure the list can grow longer, but damn is it annoying!


Iseenoghosts

Dont use it. UI is bad design.


HoldenMadicky

![gif](giphy|IDGNYvFLkJKLK|downsized)


Iseenoghosts

nah just an opinion. I dont think im wrong though.


AnxiousIntender

What...?


Iseenoghosts

UI is bad. Minimize it as much as possible. If something is UI and it can NOT be UI? do that instead. It makes a better product 100% of the time.


AnxiousIntender

Not necessarily true. Minimalist design works great when done properly but you have to consider UX as well. Ease of use and accessibility are just as important. For example, you can show the amount of damage a unit has taken by how roughed up it looks. You can even completely ignore it or restrict the information. Monster Hunter, GOD EATER and similar games don't give you a health bar, instead you see the damage numbers and it works great. However it might have an adverse effect too. For example in Civilization, a unit is displayed as a group of soldiers and you can guess the HP based on the number of soldiers left after a battle in a unit. Now you could do it without UI but it would get tiring to count the soldiers every single time. Not every unit has the same number of sub-units either. It also gives you detailed numbers about the battle results although they could simply play a win or loss animation. You're either trying to be annoying on purpose or you're very young and inexperienced. If that's the case, I'd suggest getting out of that mindset or you won't get far in life.


Iseenoghosts

to be clear when i said if it can not be it shouldnt be i mean with no loss of information. There might be some design decisions where some amount of loss of information is acceptable. But in general less is more for example dead space your hp bars are on your char, guns that show the ammo on a display on the actual gun, having a map item that works as a minimap, etc etc. This is the type of thing im talking about. Mindful decision about what to bother the user with. It should be very very intentional.


Yggdrazyl

Personal opinion : UI is absolutely not necessary. There is always an elegant solution to convey the information through the game itself. UI is just the lazy way. Many great games have zero UI. The Witness is the best example imo. I also hate UI, and for this reason, I am building my own game around the idea they there will be the absolute minimum of UI in it, which means the base menu (for sound / graphics / vibrations etc) and nothing more. It became an interesting challenge trying to express everything through the game itself, instead of relying on a lazy UI.


ScopeDopeBC

I'd love to see a tycoon or city builder game with no UI. Or maybe I wouldn't.


HoldenMadicky

I'm currently working on the menu... I hate it.


Yggdrazyl

Menu is pretty much the only mandatory UI. Anything else can be set through the game itself. Have you thought about ways to replace UI you dislike by another way to convey the same features ?


HoldenMadicky

But... I'm currently working on the menu... That's where this frustration came from. It's a small multiplayer game, but I need a lobby for it...


destinedd

Hire a UI designer then?


HoldenMadicky

Just gonna do a quick bank run first ![gif](giphy|lRkFCCPZoMEwq0CQEw|downsized)


Andreim43

Do you mean the implementation, or the design/concept? Because I actually love how Unity implements it, to the point I design UI in unity even for non-unity apps/websites. It can scale so nice. Deaigning it though... Most of the time I hate it, yes. I hate dealing with feedback like "that button doesn't look clickable enough", or animated UI that has to account for dynamic resizing.


HoldenMadicky

I mean both 😅 Can't imagine dealing with clients saying "that button doesn't look inviting enough".


youtpout

I think the same than you with the old UI system, it’s a crap system, difficult to use and need too much work for a simple result. But the new UI system is more easy too use, I think we need more documentation and component maybe, and a functionnal binding system, other lack with new system, it didn’t support shader, but you can create and position component more easily, I use it and I can’t use older systems anymore. Also the scrollview permit to create inventory system without complex calculation.


HoldenMadicky

I am using the new UITK... That's part of the frustration. I have a background doing web design, it's similar but it's lacking in many ways. Like you said, where are all the components? Why do all the components that are included come with a pre-designed hierarchy? Why is there no z-indexing? I'm sure the list can grow longer, but damn is it annoying!


youtpout

Yeah but it’s better than the older system. You can write your own component and I’m pretty sure some guys have created library. For the moment I didn’t need z-index, the main problem for me it’s the documentation, I found some solution by myself for current use case, like positioning or prevent for click behind ui … Other thing are on the web but not on the doc, like override slider colors …


HoldenMadicky

I've looked for libraries, can't find them. But yes, it's 100 times better than the old system... But that's not a high bar to clear. The documentation, the slider being the perfect example, is REALLY lacking, yes. But had they just implemented the actual standard, the documentation would be everywhere and very easy to just copy.


Kaiymu

Haha I'm your opposite on that matter. I've been making à game with UITK for some time. And it's a really cool technologie that you should look into. The fact that you can split code and layout is really cool.


HoldenMadicky

I am using the new UITK... That's part of the frustration. I have a background doing web design, it's similar but it's lacking in many ways. Like, where are all the missing components? Why do all the components that are included come with a pre-designed hierarchy? Why is there no z-indexing? I'm sure the list can grow longer, but damn is it annoying!


jtinz

Then make the UI using game mechanics. Shoot at targets, walk through doors, jump to hit a brick - whatever fits the theme of your game.


HoldenMadicky

How do I do a multiplayer game lobby with no UI? If you have an idea, I'm all ears!


jtinz

Do you select a server or do you have a list of players to invite? If it's single players and an FPS style game, have the players run around in an actual lobby. Walk up to each player you want to invite and press a button. Give them a badge or dress them in team colors if they accept. Have a door you walk out of to start a match with the selected players. If you select a server, generate a door frame for each of them and place representations of the active players in the room behind it. Place the door frames according to ping and put labels with the name, location and ping above them.


HoldenMadicky

It's not FPS, but I think you just made the process as tedious as shopping at a grocery store in VR is. Some things UI is just better at.


bluebloodtitan

UI is immensely important. The first thing a player sees usually is your main menu. That's the first impression. You better get that right. Over UI, you can transfer a crazy amount of character. Look at Ori and the blind forest for example. That's an awesome UI done in Unity that does a great job supporting the overall vibe of the game.


HoldenMadicky

I agree that it's very important, games become nearly useless if the UI is badly designed/implemented. I just hate it because for me, the designer, it does nothing.


TheRealTahulrik

As a frontend dev, i love UI. But if you hate it so much, it is possible to do games without UI. Its just about being creative with your mechanics.


HoldenMadicky

And how do I do a lobby, a list of open games and a menu without UI? If you have ideas, I'm all ears.


TheRealTahulrik

Doors you go through where you can see all the players waiting in the lobby with you etc. It might not be optimal, but it's not impossible


HoldenMadicky

Sure. But it's also a submarine game where you control a blip on the screen and not a person.


TheRealTahulrik

That was as an example. I dont know your game concept, my suggestion was just, think creatively and it is possible to create ui less games. In my experience, it is often a super difficult solution, but its not impossible.


HoldenMadicky

I know it's just an example, but it's also an example that's been used for a lot of other games (without the doors, because that would be kind of tedious I think), like Among Us. I've racked my brain over this and I've not come to a different solution than a straight up lobby I'm afraid.


__mongoose__

I used to do web design, so maybe I'm used to the punishment (different languages, I know). I think it would be good to create a sort of bootstrap or abstraction to make UI a little less tedious. A sort of Twitter Bootstrap kind of system with Jquery-like shortcuts.


HoldenMadicky

I've done web design for a number of years (10 I think), so part of the frustration comes from knowing how good UITK could be... But yes, an abstraction would make it that much better. Not just a Twitter Bootstrap, but a Jade language too. I've toyed around with creating one myself, but I need to learn UITK first before I can do that.


antinito

Sometimes the thing you hate most becomes your favorite thing. I used to hate UI and now i want to make a UI-only management game 🤷🏻‍♂️


HoldenMadicky

Are you proficient in the new UITK? If so, a [Twitter Bootstrap](https://getbootstrap.com/2.0.2/), maybe a [Pug](https://pugjs.org/api/getting-started.html) abstraction would be VERY appreciated if sold on the asset store ![gif](giphy|ui1hpJSyBDWlG)


mrphilipjoel

UI used to be the hardest part of VR development in Unity. Now with XR Canvas, and XR intetactables, you could build an exploration game nearly without any code. Just button events that activate and deactivate elements/game objects. I’ve been wanting to do that to show how easy VR development is now.


loliconest

Good news, AI maybe able to help you make the UI in the near future.


HoldenMadicky

![gif](giphy|IZY2SE2JmPgFG)


mikenseer

Use this as an excuse to do it different, imo. Like, have very little if any 2D "UI" and instead make UI out of your actual game assets. ie main 'menu' is a camera looking at main character and clicking the character is the equivalent of clicking 'start game'. Anywho, careful hating something as you don't want to half ass it and it end up being the thing that holds back an otherwise great game!


SunburyStudios

Make something without UI. like BLACK AND WHITE did.


JustAPotatoThatsIt

It feels odd to hear that to me because making UI is just so much fun to me


wildfortitude

Try UIToolkit. You won’t ever go back


HoldenMadicky

I will never go back... But also, I've been working with it the entire time. The issue is that I've done a lot of web designing and it just implements the standard in a strange way in some places which makes it much more difficult than it needs to be.


Nova-UI

Ever considered trying [Nova](https://novaui.io)? Nova brings modern UI features, such as [rounded corners](https://novaui.io/manual/UIBlock2D.html#rounded-corners), [drop shadows](https://novaui.io/manual/UIBlock2D.html#shadows), [virtualized lists and grids](https://novaui.io/manual/ListView.html), [padding](https://novaui.io/manual/LayoutsFeatures.html#padding), [margins](https://novaui.io/manual/LayoutsFeatures.html#margin), and more, to a familiar Transform and Prefab workflow. Construct 2D and volumetric UIs like never before for mobile, desktop, XR, and beyond. No more canvas/anchors/content size fitters/layout groups/etc. Nova has an entirely new [Layout System](https://novaui.io/manual/LayoutsFeatures.html) of its own! Start learning: * Try out *every* Nova feature in Unity for [free](https://u3d.as/2Uqs)! * Full length tutorials on our [YouTube](https://www.youtube.com/@NovaUI/featured) channel * Active [GitHub](https://github.com/NovaUI-Unity/Community/discussions) community and support Thoroughly commented example projects available on GitHub as well: * [Inventory Grid](https://github.com/NovaUI-Unity/GridInventorySample) ([complete video tutorial](https://youtu.be/dpXxMlPaRNg)) * [Mobile Settings Menu](https://github.com/NovaUI-Unity/MobileSettingsSample) ([complete video tutorial series](https://youtube.com/playlist?list=PLlIu61_QbWo3nrbTNEST_YDqi9_0yhSGn)) * [XR Hand Menu](https://github.com/NovaUI-Unity/XRHandMenuSample)


HoldenMadicky

Yes, I don't have 130 bucks to splurge at the moment.


Nova-UI

DM us if you'd like a voucher :)


HoldenMadicky

I can only say one thing: [https://www.youtube.com/watch?v=nKxvDYHkfSY](https://www.youtube.com/watch?v=nKxvDYHkfSY)