I just want to do a quick sanity check. I’ve been playing around with UMG and slate with some free time to just get a better feel of how everything in that part of the engine hangs together. I also wanted to do this from C++ since I thought it would be more informative that way, and that’s generally how I like to work anyways. I’ve also done it in-editor quite a lot before, so that isn’t as interesting to me.
Now to my question. I don’t understand why Epic recommends we use slate style sets. Are there any advantages / optimizations I’m missing here? I’ve grepped around in the code to try to find an answer by myself, but I’ve come up with nothing in particular, so I thought I’d just throw it out here on the forum before I move on
First off, using style sets from C++ you have to use the awful and error prone asset location pattern of “FSlateGameResources::New()”. I tried playing around with skipping this and just using the USlateWidgetStyleContainerBase derived types in UPROPERTies by themselves. I thought I’d just put them on the base HUD class, create them in the engine and then set the properties accordingly. Unfortunately it doesn’t seem to accept subclasses as I got type matching errors.
I then decided to skip deriving from FSlateWidgetStyle and USlateWidgetStyleContainerBase completely, and just create “raw” style objects deriving from UObject and having a few properties like
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Style") FSlateBrush ButtonBrush;
I then propagate them using slate arguments instead of using the service locator FStyle::Get(). Getting rid of some service location always feels nice, so I see that as a plus anyways.
But is there some downsides to doing what I’m doing now?
I suppose since I’m not using the style system, I cannot use my custom styles for UMG widgets, but as long as there is no overlap, then I suppose there is no problem, right?
It’s a pity that the style system does not let you set the UI resources through UPROPERTies directly, hopefully someone makes that happen eventually
Best regards, and happy new year!