In my case, the issue was the TGA icon file itself. You need to select UserInterface2D(RGBA) in Compression Settings - this will make it so that the custom billboard icon shows on top of the scene root component like it does for the default billboard icon.
On top of that, check the “is screen size scaled” to scale down along with the scene component. The result is acceptable in editor (even though the white ball is still behind the icon).
Also, out of curiosity I went looking into the CPP engine files for the skylight.
USkyLightComponent::USkyLightComponent(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
#if WITH_EDITORONLY_DATA
if (!IsRunningCommandlet())
{
static ConstructorHelpers::FObjectFinder<UTexture2D> StaticTexture(TEXT("/Engine/EditorResources/LightIcons/SkyLight"));
StaticEditorTexture = StaticTexture.Object;
StaticEditorTextureScale = 1.0f;
DynamicEditorTexture = StaticTexture.Object;
DynamicEditorTextureScale = 1.0f;
}
#endif
If you are creating your own blueprint class in C++ you can actually use this.
I’m not sure how involved it would be (not going to because I want to release what I’m making on the marketplace), but perhaps you can copy over the type of BP you need and expose those variables to BP - thus creating a custom actor that you can actually customize the in-editor icon of without accessing the code ever again.
(in fact, since it is easy, I’ll turn this into a feature request )