I managed to fix it myself by accident. For the function to show up in your right click menu, you need to add the BlueprintCallable specifier in UFUNCTION macro
UCLASS()
class PINNEDASSET_API UPinAssetAction : public UAssetActionUtility
{
GENERATED_BODY()
public:
UFUNCTION(CallInEditor, BlueprintCallable)
void Generate();
};
This seems to be a bug since 5.2 and still exists in 5.3.2. I am following a tutorial about UE editor tool programming and many comments complain about this bug. The usable way to show c++ function of UAssetActionUtility derived class with CallInEditor in right-click menu correctly, is to create a child blueprint class asset from your UAssetActionUtility derived class (in this article is UPinAssetAction ) and put it in any Content folder. Any time you add a new CallInEditor function in this C++ class, you will have to go to that blueprint asset click compile and save, unless new written functions may not show up correctly.
I haven’t find a more elegant way to just skip the manual action above or do that by code. If anyone knows how to do it, plz leave comment. Very grateful to that.