Description

Clearing the value of a native component's instanced property does not update placed blueprint instances of the property

Regression:
No - same behavior occurs in 4.14.3 (CL 3429277)

Steps to Reproduce
  1. Open UE4 Editor (any project)
  2. Add code to project based on actor (MyActor) and Actor Component (MyActorComp)
  3. Add the following to MyActorComp.h
    UPROPERTY(EditAnywhere, Instanced)
    class USoundNodeDelay* TestInstancedObject;
    
  4. Add the following to MyActor.h
    • Add above .generated.h include: #include "MyActorComp.h"
    • Add below Tick() declaration:
    • UPROPERTY(VisibleAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = true), Category = test)
      class UMyActorComp* TestBugComponentNative;
      
  5. Add to AMyActor::AMyActor() in MyActor.cpp
    TestBugComponentNative = CreateDefaultSubobject<UMyActorComp>(TEXT("NativeBugComponent"));
    
  6. Compile
  7. Create a blueprint based on MyActor
  8. Add MyActorComp through the Add Component button
  9. Select TestBugComponentNative and MyActorComp components and set Test Instanced Object to "Delay"
  10. Compile and Save blueprint
  11. Place instance of blueprint in the level
  12. In the blueprint editor, click the yellow arrow to reset the value of Test Instanced Object for both components
  13. Compile Bluepirnt

Result:
In the placed instanced, MyActorComp variable is reset to none but TestBugComponentNative variable still shows as Delay

Expected:
Both native and non-native properties respond the same when changed. Native property updates to none when reset in the blueprint

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-45193 in the post.

15
Login to Vote

Won't Fix
ComponentUE - Gameplay - Blueprint
Affects Versions4.14.34.15.24.164.17.2
CreatedMay 18, 2017
ResolvedAug 18, 2021
UpdatedAug 18, 2021