How to do it...

  1. Create a new Actor class in the editor called PropertySpecifierActor:

  1. Add the following property definitions to the class:
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "PropertySpecifierActor.generated.h"

UCLASS()
class CHAPTER_09_API APropertySpecifierActor : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor's properties
APropertySpecifierActor();

protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;

public:
// Called every frame
virtual void Tick(float DeltaTime) override;

// Property Specifiers
UPROPERTY(EditDefaultsOnly)
bool EditDefaultsOnly;

UPROPERTY(EditInstanceOnly)
bool EditInstanceOnly;

UPROPERTY(EditAnywhere)
bool EditAnywhere;

UPROPERTY(VisibleDefaultsOnly)
bool VisibleDefaultsOnly;

UPROPERTY(VisibleInstanceOnly)
bool VisibleInstanceOnly;

UPROPERTY(VisibleAnywhere)
bool VisibleAnywhere;
};
  1. Perform a Save, Compile your code, and launch the editor.
  2. Create a new blueprint based on the class.
  3. Open the blueprint and look at the Class Defaults section:

  1. Note which properties are editable and visible under the Property Specifier Actor section:

Location of the Property Specifier Actor
  1. Place instances in the level and view their Details panels:

  1. Note that a different set of properties is editable.