NoesisGUI – The Unity UI Framework That You’ve Never Heard Of!

If you’re like me, trying to create user interfaces in general is a challenge. So when it comes to working in tools that you’re less familiar with, that challenge basically grows to a level where it’s a roadblock. For me, trying to create user interfaces in Unity3D is basically the perfect example of hitting this roadblock! That’s not to say the Unity UI framework tools that are available in Unity3D are bad, but my skill level is essentially reset to zero when working with these tools. Fortunately, I came across this little gem called Noesis GUI that enables WPF inside of Unity3D!

I plan to do a few updates on this either via YouTube or short blog posts, but NoesisGUI has essentially unlocked my ability to create user interfaces inside of Unity3D. You can find my intro video here, or watch it directly below:

YouTube player

Now I’m still not a UI expert by any means, but at least I get my familiar environment back. Noesis GUI has two primary benefits for me as a software developer:

  • I have access to all the WPF controls, XAML syntax, and styling capabilities that I know and love.
  • I can use tools/IDEs I’m familiar with, not sacrificing years of experience using these tools.

More Familiar Unity UI Framework

On the first point, for me I find it very tedious to create UI elements in Unity3D. For some good examples, I consider trying to do two pretty common things: control layout and lists of items. On control layout, I find the anchoring system and transforms a total pain to work with in Unity3D. It’s a personal preference sort of thing, but I find it difficult to navigate and get things to work as I expect.

However, I know thanks to Noesis GUI I can leverage things like grids and flowing panels so I can use what I know and not try to design a layout system from scratch. Same thing goes with lists! I can use a ListView control thanks to Noesis GUI and then style/template all the controls inside of it leveraging XAML.

Effectively, being able to leverage Noesis GUI to enable my experience with WPF means I can struggle with UI design instead of struggling with UI design AND how to make the UI framework work! It doesn’t fix my poor UX abilities, but Noesis GUI does allow me to do my best work at least.

Noesis Allows For Familiar Tools

The second point is around tooling. The Unity3D editor is powerful and if you watch any amount of tutorials from YouTube you’ll know that there’s no shortage of people showing how to drag and drop objects into the scene to get the result you’re after. But this doesn’t work well for my design approach because I don’t want my game to be coupled to the Unity3D engine (which I’ll need to write more about later).

In fact, the more things I place concretely in the scene, the more it couples my game to Unity3D and it’s just not something I want to commit to. As a result, to decouple my UI code I found myself trying to programmatically make Unity3D UI elements and started to dream up some templating language.

Nonsense.

Noesis GUI puts me back in my comfort zone and allows me to use familiar tools like Blend where I get my visual editor for my WPF controls as well as the split view with the XAML editor. Aside from a couple of minor quirks, I was able to get Blend to show things exactly as Unity3D shows them. That means I can rapidly develop my game UI inside of Blend.

Along with with a bunch of other design philosophies (i.e. decoupling from Unity3D engine), this means we could literally write a couple-of-line game entry point with a WPF UI overtop of it directly in Blend and have it map to expected behavior in Unity3D. Again, more on some of those design philosophies later, but Noesis GUI really took it to the next level by allowing us to decouple the UI completely from Unity3D restrictions.

Noesis – Unity UI Framework Summary

If you hadn’t heard of Noesis before, now you have! I hope that this article was able to open your mind to being able to use different options for a Unity UI Framework if you’re like me and don’t prefer the built-in one.

I plan to create more writeups and videos on how we’re using Noesis GUI in our RPG project, so stay tuned! If you’d like to stay up to date with content, consider subscribing to my weekly newsletter!

author avatar
Nick Cosentino Principal Software Engineering Manager
Principal Software Engineering Manager at Microsoft. Views are my own.

This Post Has 2 Comments

  1. Aaron Carter

    I’ve not only heard of it, I’ve been dabbling with it for quite some time. I’m running my own company now, and we’re using it to build our UIs for our Unity projects, and I’m considering using the native and .NET standalone packages too. Noesis is just REALLY good compared to Unity’s GameObjects-based (slow) UI system which is a monumental effort to try to scale and get to perform at less than stat and fps-tanking speeds … in fact, for my first ever Unity project, many years ago, was a “4X grand strategy” prototype in which I focused mainly on the map and UI … after creating a little simulated trading market with 48 different items, I noticed my frame rate was dropping as low as 17 or 19fps when I opened the “market menu” and looked at the scroll zone and grid I put there to display them. I thought I must be doing something wrong, and later I found out that yes, I was doing something wrong, but even if I did it all *right* it simply wasn’t ever going to perform well and continue to scale up. I got really upset when I watched an old Unite conference about UI and performance and one of their senior engineers was explaining all the hell they went through to make a big UI perform borderline acceptably in a large project. And that is what began my hunt for alternatives!

    I started off searching for ways to try to “hack” and “bruteforce” my way through the problem, as I often do, and started researching how to steal the pointer to a D3D12 render context out of Unity at runtime, but before I ever started on the idea I ran across Noesis, and started realizing this was what I needed! My biggest hurdle was simply not being an experienced UI or WPF developer and being put off by xaml and its complexity and verbosity. But I finally started getting over it, because my company doesn’t have a dedicated UI developer! 😛

    Now, I’m feeling very optimistic and excited about it. I’ve actually begun studying WPF to understand the underlying architecture and systems that Noesis is either building upon or emulating for us, and that even lead to discovering (and writing) some new cool tools. You were one of the ONLY people I ever saw cover Noesis on YouTube, so I recognized your page/name when I found it! Had no idea you were working at MSFT, nice! That makes us partners or something I suppose, haha 🙂

    Regards, and thanks for the Noesis coverage! Would love to see/hear more and maybe schedule a chat sometime soon!

    1. Nick Cosentino

      Hey man! I’m so sorry that I never saw this comment come in. My WordPress notifications are VERY hit and miss. I’ve glad we’ve been able to connect on YouTube and LinkedIn though!!

Leave a Reply