Unreal Editor Utility Widget

4 views
Skip to first unread message

Baldomero Prado

unread,
Aug 5, 2024, 12:31:17 PM8/5/24
to logsilowho
Ihave a editor utility widget blueprint that I need to open via python. I have managed to get the blueprint generated class of the widget and then the class default object from that, but when I use the EditorUtilityWidget.run() command nothing happens.

List View is a useful type of widget available in Editor Utility Widget Blueprint (EUW). During editor tooling in Unreal Engine, there are many cases require querying assets or actors and display them as a list.


One of the recent tools I worked on will list out all the cinematic cameras in the level as a list view widget (a subset of tools for our Virtual Production workflow). From it we can snap to the camera view with options to lock and unlock the viewport control.


However, the setup of List View is not very striaightforward and addtional cares must be taken even for the minimal functionality. Most of the documentations are scattered around community pages so here I will document my practice.


Back in Entry Widget blueprint, right click to implement the interface event Event on List Item Object Set and pass the data from inside of variable to the widget to display (TextBlock for example here).


Editor Utility Widgets are one of the new feature of the Unreal Engine since 4.22. It allows users to define editor widgets using the UMG designer. We already covered this topic previously, so if you want to start with Editor Utility Widgets, you may want to check this article, this one and this one.


Then, in this plugin, we will create a UBlueprintFunctionLibrary. Actually, it can be any class, but we will only need to create a static function allowing us to start the Editor Utility Widget, so a UBlueprintFunctionLibrary is enough.


Once this code copied in the plugin, we have everything required to start an Editor Widget Utility from C++. We just need to call StartWidget with a reference on the UWidgetBlueprint we want to start.


The function previously defined is exposed to blueprints (marked as BlueprintCallable), this means the plugin we created allow us to programmatically start Editor Utility Widgets using blueprints. Indeed, the StartWidget function is callable from other Editor Utility Widgets, so now an Editor Utility Widget can start another widget.


Here we just created a simple Editor Utility Widget with only one button, and on the click on this button we want to spawn another widget. And, the previous figure shows all we need to do to implement this.


Hey! This is my 1st comment here so I just wanted to give a quick

shout out and say I really enjoy reading your blog posts.

Can you suggest any other blogs/websites/forums that go over the same

subjects? Thanks for your time!


If we let our cursor over the Editor Widget we created the last time, we can notice that the parent class of the asset is the EditorUtilityWidget class. This class will be our base class to define an Editor Widget from C++. The problem is that there is not yet a lot of resource explaining how to interact with this class, so it may require a bit of reverse engineering to understand how to use its functionnalities.

The official documentation can be found here. To look for the source code of the class, or the exposed functions, we can go to the folder Editor/Blutility of the engine sources.


We will start by creating a new Editor Widget Utility Blueprint, like we did in the first tutorial, then we open it.

After, we go in the Event Graph so we can edit the class settings and change the parent class. By setting our C++ class as the parent class, we are now able to call the C++ functions defined in the C++ class.


Obviously, this example is quite simple: we are not really using the full potential of the C++ functionnalities, however we are presenting how we could do it. If you are familiar with UE4 C++ you should now be able to see how C++ functions can be called from the Editor Widget. In the next article, we will see more details about it, and we will focus on how we can edit and control the widget from the C++. If you want to be notified when the next articles will be published, you can follow us on Twitter and Facebook.


I just started using CityEngine with UE5 and I'm already loving it. After playing around, I wanted to know how I can add reflections to generated mesh. Similar to what we can see in this demo for CityEngine. It looks beautiful.


Otherwise a slightly faster approach directly in Unreal would be to open the Parent Material, delete the connection to the roughness value in the material and connect a constant value node with the desired value.


Another approach would be to use Editor Utility Widgets -US/scripting-the-unreal-editor-using-blueprints/ to adjust all the materials via blueprint scripting, but it would probably take some time to get started with this approach.


The easiest way to add reflections to your scene is to decrease the roughness value on your building materials (I got similar results to the screenshot when I set them between 0.05-0.1). This can either be done in Unreal -US/Resources/ContentExamples/MaterialNodes/1_4/ or already in CGA -material-attribute.htm

Improving the reflections can be done in multiple ways, I would suggest to look at the following website -US/reflections-environment-in-unreal-engine/


I appreciate your response on this. So if I go in to the generated mesh > then materials > I see a bunch of materials there. What I also see is a Parent Material (opaque). I can go into each material and set the roughness value from there but that would take a lot of time, because that would take ages, is there any way I can adjust the roughness for all those materials. I'm sorry if this is a noob question.


An assert crash is now triggered when set a widget using material to WidgetLoadingScreen of FLoadingScreenAttributes then call FDefaultGameMoviePlayer::SetupLoadingScreen().The ensureMsgf in quest ...


If exiting the editor before the EditorUtilityTask completes, it crashes. It will not crash if canceling the UtilityTask and then exit the editor. The following implementation does not allow destruc ...


From a UDN, they also mentioned: Update: I added CommonUI to the test project to try the "Consume pointer input" setting. It behaves the same way as our custom input blocking widget in that the in ...


This is not a regression. Tested in //UE5/Release-5.2 CL26001984A widget that is a derived from a child widget reports component variables as Invalid, while the child and parent of that child will ...


Spawning Editor Utility Widgets via Spawn and Register Tab and Get ID inside another widget creates unbounded length IDs that get progressively longer with each subsequent spawn, as the ID is append ...


The Align Actors action aides in the layout of UX controls, or any actor type. To access the action select multiple actors you wish to align. Then right-click in a viewport or outliner window. Finally, select Scripted Actions > Align Actors. A properties window will pop up prompting for alignment settings.


The Icon Brush Editor editor utility widget aides in editing a UxtIconBrush by visually searching though the characters in a UFont. To open the editor click the "Open Icon Brush Editor" button from any UxtIconBrush details panel. Once opened, the editor should display a window similar to the one below:

3a8082e126
Reply all
Reply to author
Forward
0 new messages