[4.6 Hot Reload] UPROPERTY/UFUNCTION/BP Impl. Events do not show up after hot reload, Development Editor x64

Dear Epic,

Please review lots of detailed info and my tests here:

It seems as though in 4.5, for Camille ( see above link), he got all the reflection data to update after a C++ hot reload.

However in 4.6 I’ve just verified that for Development Editor, UPROPERTY(),UFUNCTION() and BP Implementable Events do not get properly updated after a hot reload.

Since all the info is at the link above, and I just did all the research, I thought you’d like to have this in your answerhub records.

Let me know if there is a planned fix for this!

Again Camille did get the reflection data to reload using the Debug build instead of Development Editor, and in 4.5

All my testing is Development Editor x64 in 4.6

#:heart:

Hi ,

Could you confirm whether you were using 4.6.0 or 4.6.1 when you were testing this? When I tried with 4.6.1, two of the three tests failed for me, but when I tried with 4.6.0, only one failed. Regardless, it does look like some of this is not working correctly. I will dig into this issue a little more after Christmas.

I was using 4.6.0 :slight_smile:

Have a wonderful holiday time !

I also had something like this in 4.5.1 with BlueprintNativeEvent and/or BlueprintImplementableEvent (i do not know atm).

What i also noticed was, that some events didnt show up in the My Blueprint Tab but were only implementable in the Event Graph via the contex menu.

Maybe this is connected, or it is already fixed with 4.6, but just wanted you to know :slight_smile:

Happy Holidays

Hi ,

I ran some additional tests on this issue today, and it looks like it is an extension of an issue that I have already submitted a report for (UE-6944). Adding a new UFUNCTION to a project that has already had a Hot Reload performed on it will result in the new UFUNCTION (as well as any already existing UFUNCTIONs) not appearing in a Blueprint previously created from that class. I am going to add some additional details to my previous report to include what I saw when testing your report.

This is the process I ran through and the results that I saw.

I started with a brand new code project created using the first person template. I built the project in Visual Studio, then opened it in the Editor. I added the following code to the default Character class included in the template:

UFUNCTION(BlueprintImplementableEvent, Category = "Test", meta = (FriendlyName = "Test Function"))
virtual void TestHotReloadEvent(bool CheckThis);

With the Editor open, I built the project in Visual Studio. Once the build completed, I opened the MyCharacter Blueprint in the Editor (this Blueprint is derived from the default Character code class). In the Graph tab, I right-clicked on the graph and ran two searches: one for “hot” and one for “test”. The new function showed up in both searches. However, this apparently only happens because this is the first hot reload performed on the project that involves a UFUNCTION. If I removed the UFUNCTION and re-added it with another Hot Reload, it would not appear in any searches in the graph until I had closed and re-opened the project in the Editor.

I then added a UPROPERTY variable to the default Character class:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Test")
float HotReloadTest;

I performed another Hot Reload and this variable appeared in the Details tab, as well as in the My Blueprint window in the Graph tab. However, neither the Get or Set nodes were available when I performed the same right-click searches in the graph, and the previous UFUNCTION no longer appeared in the search results (this is similar to what I had reported previously in UE-6944). Closing and re-opening the project in the Editor allowed the UFUNCTION to appear in the search results, as well as showing the Get and Set nodes for the UPROPERTY I had added.

I then added another UFUNCTION to the default Character class:

UFUNCTION(BlueprintCallable, Category = "Test")
void HotReloadAndReflection(bool TrueOrFalse);

I also included a blank implementation in the source file for the default Character class and built the project in Visual Studio to perform another Hot Reload. Both the new and original UFUNCTIONs were not visible when I performed the same right-click searches for them in the Blueprint graph (this is what I had originally documented in UE-6944), and the UPROPERTYs get and set nodes were no longer visible in the search results (it was still visible in the Details panel, as well as in the My Blueprint window). Closing and re-opening the project in the Editor allowed everything to show up in the search results.

All of the tests above worked fine in 4.5.1, so it looks like we broke something in 4.6. When you had mentioned that you did not see the UPROPERTY that you added before performing a Hot Reload, where were you looking for that variable to appear?


@gormed,

BlueprintImplementableEvent and BlueprintNativeEvent will appear in either the right-click search results in the graph or the My Blueprint window depending on whether or not they have a return value. If they have no return value (void), they will be in the right-click search results. If they do have a return value, then they will appear in the My Blueprint window in the Overridable Functions section.

Thanks for clarifying that. Although that could be a little confusing if one adds a event that won’t show. Maybe it would be more consistent, if both show up on the My Blueprint tab, but that is just my opinion…

#Thank You !

Oh wow very thorough answer, you surprised me, so soon after Christmas!

:slight_smile:

“. Closing and re-opening the project in the Editor allowed the UFUNCTION to appear in the search results, as well as showing the Get and Set nodes for the UPROPERTY I had added.”

Yes that is the current work around in 4.6!

“All of the tests above worked fine in 4.5.1, so it looks like we broke something in 4.6. When you had mentioned that you did not see the UPROPERTY that you added before performing a Hot Reload, where were you looking for that variable to appear?”

Oh that’s very interesting! I did not do any testing in 4.5.1, only 4.6.0

I was looking for the uproperty’s get and set to appear, as you’ve already mentioned verifying as an issue still to be resolved.

Great work !

Thanks for your very thorough confirmation of my experiences!

It sounds like you’ve reported all this already, so I will mark this as resolved!

#:heart: