Why blueprint is grayed out after update from 4.7.6 to 4.8?

In our project we have some configuration structures (CPP) with many properties and corresponding blueprint class where properties are defined. We were using such a system to define parameters and we were changing them at runtime up to 4.7.6 version. Starting with 4.8 our properites in blueprints are grayed out when playing game in editor. Why is it like this?

Example:

UCLASS(notplaceable, BlueprintType, Blueprintable, meta = (ShortTooltip = “Level settings, parameters, configuration.”))
class THEGAME_API TGLevelSettings : public AInfo
{
GENERATED_BODY()

public:
TGLevelSettings(const FObjectInitializer& ObjIni);

UPROPERTY(EditAnywhere, Category = "TheGame")
float AAA;

UPROPERTY(EditAnywhere, Category = "TheGame")
float BBB;

};

And now if you create blueprint on base of this class it will be grayed out when you start playing level and it will be not posible to change / tweak properties at runtime.

Hi pyshtoff,

If you wish to edit a UPROPERTY in your blueprints, you’ll also need to add the BlueprintReadWrite specifier in the declaration. EditAnywhere, despite the vocabulary used, does not include blueprints but mainly covers the main editor.

Hope this helps!

Sorry, but it doesn’t help :frowning:

I will try to be more precise and give repro steps.

  • start anyone minimal initial project
  • create CPP class AExampleActor like the one below. The base class can be AActor or AInfo. You may use editor to generate it:
UCLASS() class THEAPI_API AExampleActor : public AActor { GENERATED_BODY()

public:
AExampleActor();

UPROPERTY(EditAnywhere, BlueprintReadWrite)
float ExampleProperty;

};

  • create blueprint class with its base class set to AExampleActor. Name it ExampleActorBP and save it in any place in the project.

  • open ExampleActorBP in editor window and edit ExampleProperty. Set its value to say - 1

  • while keeping ExampleActorBP window open start level and you will see ExampleActorBP window graying out and it is not possible to edit property while playing game

I know that if I place ExampleActorBP on level it will work but I’d prefer not to do this. We I using such a system to define some values for the game and tweak them at the runtime and it was working fine in 4.7.6 and earlier.

Why did it change and how can I achive the same result in 4.8?

Hi pyshtoff,

I apologize for the late response. This was a design decision that was made for 4.8 and onward as these values were never intended to be editable from the blueprint editor while simulating. The reason why is because, due to the way the editor is coded, changing these values through the details panel could cause unexpected results and errors in some situations, including skewed results that may not be similar to if these values were changed in code/blueprint nodes.

Have a nice day,