UObject's CallInEditor function doesn't show up in Details panel when it is a sub-object within a scene component.

Seemingly related question but remains unsolved: Getting CallInEditor UFUNCTIONs to appear in details panel

Here is the question:

I creat a scene component and it has an array property:

UPROPERTY(Instanced, EditAnywhere, BlueprintReadOnly, Category = "ECamera|Extension")
TArray<TObjectPtr<UExtensionBase>> Extensions;

The UExtensionBase class is inherited from UObject and has a public function that i want to call in editor:

UFUNCTION(CallInEditor)
void Toss();

However, when i attach this component to an actor and add elements to the Extensions array, i can see all the UExtensionBase properties correctly but not the Toss() function, which i have specified with the CallInEditor specifier.

Could anyone help me figure it out why this happens, and what is the workaround to deal with it?

2 Likes

In my case, the buttons show up when I click the ‘Component’ (below the ‘Instance’) in the Details panel. See the example below.
(No, it does not seem logical and user friendly and it is not how it is documented in the code (ObjectMacros.h):

/// This function can be called in the editor on selected instances via a button in the details panel.
CallInEditor,

)