How would I go about implementing a GUI in a plugin for UE4

I want to make a plugin for my project that has a separate panel on the editor just to create new items and manage my items data asset. But I can’t find documentation about how to make the GUI. I’ve looked into the Source Control plugin source code and I found a C++ slate class, but I couldn’t find how it really works. Like, the Source Control plugin has a button on the editor toolbar and when you click it a window shows up. How does the engine know that the plugin wants a button on the toolbar? And how does it know that when you press the button that window is supposed to show up? What I really want here is kind of the structure of the code to make a plugin that owns a separate panel in the editor.


Slate is not well documented at all, so plan on reading lots of code :/.

Another option for easy plugin GUI is Unreal.JS. Its javascript and has an API for UMG and some nice tools for making editor plugins. You can download it from the market.

For a C++ plugin, open your Game Editor, then open Edit > Plugins, and in the lower left is a button that says New Plugin… Click on it and you get a number of options, including (I think) Editor Button (or window or something). Once you pick it, it will add the plugin source to your C++ project.

You can go to your Plugins and create a new plugin. There should be a template that has an Editor Toolbar already bound for you that creates a standalone Tab (which acts much like a window but is dockable). After that, enjoy reading the source code found in Runtime/Slate and Runtime/SlateCore. I have been spending a lot of time down there. It was the only way to really learn slate (all the documentation (of which there is little) is pretty much useless / wrong). Despite that, I prefer slate over UMG - as a programmer.