x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

BlueprintImplementableEvent doesn't get called in PostEditChangeProperty

Hi,

As the title says, whenever I call my event function inside of PostEditChangeProperty (or another function called by it) the event doesn't get triggered in blueprint.

I've debugged through my code and see that when changing a property the code executes the call, LOGs just fine but the blueprint event doesn't fire. Same behaviour happens when using BlueprintNativeEvent.

Firing the event from OnConstruction works just fine though.


 UFUNCTION(BlueprintImplementableEvent, Category = "Level Generator")
 void BuildLevel();

 void ALevelGenerator::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
 {
     BuildLevel();
     Super::PostEditChangeProperty(PropertyChangedEvent);
 }
 
 void ALevelGenerator::OnConstruction(const FTransform &Transform)
 {
     Super::OnConstruction(Transform);
     BuildLevel();
 }
Product Version: UE 4.17
Tags:
more ▼

asked Oct 13 '17 at 03:22 PM in Bug Reports

avatar image

Cafeoh
11 1 3

avatar image Doug E ♦♦ STAFF Oct 27 '17 at 07:26 PM

Hey Cafeoh-

I tried created an Actor class with a BlueprintImplementableEvent called on PostEditChangeProperty. The function was called when a blueprint of my class was added to the viewport / compiled as expected. If possible, could you provide additional setup details or a small sample project that reproduces the issue you're seeing?

avatar image Acriax Apr 09 '19 at 05:56 AM

This is an old issue, but it seems to still be a issue that I just ran into. I had the same code as Cafeoh and also didn't see the BP event execute when changing properites.

I think what Cafeoh did (and what I did) was to change the properties for an instantiated(spawned) object in the editor. When I later changed properties on the base BP class, the event executed. Multiple times, actually, even when just changing the properties once. However, that is not what I want.

I saw a suggestion to use this:

 if (!IsTemplate())
 {
     OnPropertyChangedEvent();
 }

But it doesn't work either. The weird part is that it seems like the base BP class is turned into a temporary instantiated object, and then deleted again.

  LogBlueprintUserMessages:  [BP_GridManager_C_0] Hello
  LogBlueprintUserMessages:  [BP_GridManager_C_1] Hello
  LogBlueprintUserMessages:  [BP_GridManager_C_0] Hello
  LogBlueprintUserMessages:  [BP_GridManager_C_2] Hello

That is what shows up in the log if I change the base class without any true spawned instances of GridManager in the scene.

So I have no clue how to have a spawned GridManager update itself when changing its properties in the editor.

(comments are locked)
10|2000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question