On Restarting Editor, Actor BP Pin Disconnects due to UMG Widget

Version 4.7.5

I am not sure if this is a bug or just a limitation since UMG is still a WIP, but I have noticed when using UMG widgets that if you store too much blueprint code within them, then it causes any actor’s blueprint nodes that make a function call to that widget to disconnect whatever was plugged in to the function’s input pins.

In my scenario, I have an actor called Pickup_Master which calls to wdol_InGameInventory whenever an item is picked up, and passes a reference of itself into the AddItemToInventory function. Each time I restart the editor, that pin disconnects like below (problem doesn’t occur when compiling):

In the UMG widget itself, nothing disconnects and it has no problems. At max zoom out, I managed to capture the entirety of blueprint code within it which looks like this:

However, I found while messing around testing what could be the cause of the pin disconnecting was that disconnecting nodes from the switch node that manages actions depending on the type of item picked up caused the problem of the pin disconnecting to go away.

I tried it by disconnecting one of each different collection of nodes from the switch statement node at a time, and I got the same result of it not disconnecting on restarting the editor. Therefore, I believe that this is possibly a bug or just a limitation on the amount of code that can actually go inside of a UMG widget.

For now, I am going to try creating an actor to offload some of the inventory code from that UMG widget into it, and see if I still get the problem.

Hello Snow901,

After reading over your post, the symptoms for the issue that you are having sound like those of a known issue. This issue involves circular dependencies. Please be sure to double check your project to make sure that this is not the case. I have provided an example image below to help explain circular dependency. If it turns out that this is not the case please reopen this issue with answers to the following questions.

Example:

The arrows represent references that are being made to the blueprints involved.

29898-circdepenissue.png

Quick questions:

  1. Can you reproduce this issue in a clean project?
  2. If so, could you provide a detailed list of steps to reproduce this issue on our end?
  3. Could you provide screen shots of the blueprints involved with the reproduction of the issue?
  4. Could you provide and errors that you may be receiving?

Make it a great day

Hi. I am not sure what you mean by the broken widget, as nothing is broken but everything works with the exception of a blueprint node in an actor blueprint disconnecting on each restart of the engine. I was able to work around this issue through adding an actor that manages the inventory to offset the load on the inventory widget I was using.

However, another possibility that comes to mind is that I was probably using too many reroute nodes throughout the widget’s event graph which is noticeably visible in the 2nd screenshot I posted, where that giant sea of blue lines in the middle and to the right are all rerouted from the actor passed in as a reference from the original event called in the middle.

Hello Snow901,

First off I am happy that you have solved your issue. Second, all that was meant by “broken” was that you were having an issue with it. It’s just a simplified example to help visualize the issue. After reading about how you solved your issue I am positive that this is a circular dependency issue. I will be sure to bump the community interest for this known issue.

Make it a great day

I had this happen today several times. I’m not sure what happened exactly. I had an array stored in the GameInstance that was just images that I use in my in-game UMG. I set up the array, added all of the images and then compiled. The editor hung for a few seconds and then crashed. When I reopened the editor, I restored the package for the level that I had open, but that was the only package that I had to restore. I continued back where i had left off prior to the crash and when I went to do a test play, I noticed there were a lot of things that weren’t happening, so I went back into the editor and started hunting down what had happened.

I found that the PlayerController for the game had several nodes disconnected from the OnEventBegin play, including one that spawns the character into the map. The HUD had disconnected nodes as well in the OnEventBeginPlay, including one that creates the UMG Widget for my UI. Once I reconnected those, I noticed that some of the functionality was missing for one of the UI Menus. I went back and ended up having to reconnect over 10 nodes that had been disconnected.

One thing that I noticed they all had in common is that there were casts to the GameInstance right before the nodes that were disconnected. The only weird part is that I reuse the functionality for one of the menus in two separate UMGs. In one of the UMGs, the group of functions had all of the nodes disconnected, while the second UM G had all of the nodes connected still.

This isn’t the first time that I’ve noticed nodes that had been randomly disconnected. I thought at first that it was one of the guys here at the office just messing with me, but then I checked our Perforce and there were no updates to the files (I also lock my computer every time I get up from my desk). While I was able to fix everything this time around, I’m afraid that there will come a time where something like this happens and I end up overlooking it.

Hello Chadvvick,

From the description that was given is sounds as though you have a circular dependency (which can cause nodes to become disconnected) and/or an infinite loop (which could be causing the hang and crash). Do you receive any error messages when you find that the nodes have been disconnected?

One thing I would like to point out that may be helpful to you is to make sure that whenever updating values for UMG widgets, you always go through the HUD to update it. Since making that one change, I have not had any issues with nodes disconnecting while making functionality between the player and the UI.