For making in-game UI your best option is Unity’s own UnityUI paired with Flexbox4Unity, allowing you to use modern CSS3/Flexbox layouts within Unity’s UI system, with RectTransforms etc working seamlessly together (but without all the problems of ContentSizeFitter not working, broken VerticalLayoutGroups, etc).

But… to make custom Editors/EditorWindows/Inspectors, UnityUI won’t run.

Fortunately, Unity’s new UIToolkit system – designed specifically for making Editor UI / Editor scripts – also uses Flexbox internally! It’s very fast to make Editor UI, and thanks to Flexbox it’s easy to make them look good. For all my in-game UI I now use Flexbox4Unity, and for all my UnityEditor UI I use UIToolkit.

But … there is almost no documentation, and the few docs that exist mostly push you (incorrectly) to create lots of unnecessary files, slowdown your workflow, and avoid using C# scripts. UIToolkit is much better than people think it is, once you know how to use it correctly.

So … here’s my tutorials explaining how to build Editor GUIs in Unity, using only the modern APIs.