Description

Attempting to bind a custom event to a server-only delegate property currently fails to validate after compiling a Blueprint.

Steps to Reproduce
  1. Create a new (blank) C++ project.
  2. Add a new C++ class based on Actor (MyActor).
  3. In Visual Studio, edit MyActor.h so that it appears as follows:
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/Actor.h"
    #include "MyActor.generated.h"
    
    DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FActorSpawnedEvent, AActor*, Spawner);
    
    UCLASS()
    class AMyActor : public AActor
    {
    	GENERATED_BODY()
    	
    public:	
    	// Sets default values for this actor's properties
    	AMyActor();
    
    protected:
    	// Called when the game starts or when spawned
    	virtual void BeginPlay() override;
    
    public:	
    	// Called every frame
    	virtual void Tick(float DeltaTime) override;
    
    	UPROPERTY(BlueprintAssignable, BlueprintAuthorityOnly)
    	FActorSpawnedEvent OnActorSpawned;
    };
    
  4. Recompile the editor and reload (or hot reload, either way is fine).
  5. Create a new Blueprint class based on MyActor (MyActorBP).
  6. In the Blueprint editor, switch to the Event graph.
  7. Drag off of the BeginPlay event and select to create a "Bind Event to OnActorSpawned" node.
  8. Drag off the Event pin and add a custom event.
  9. Compile. Note that an error results "CustomEvent_0 Signature Error: The selected function/event ('CustomEvent_0') is not compatible with this delegate (the delegate is server-only) - try marking the function/event AuthorityOnly." even though the event appears to be server-only due to the icon in the top-right.

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-75153 in the post.

2
Login to Vote

Unresolved
ComponentGameplay - Blueprint Editor
Affects Versions4.214.224.23
Target Fix4.24
CreatedMay 24, 2019
UpdatedJun 4, 2019