I’ve had this issue with DLSS since I used it back in Unreal 5.0 through to today with the latest version 3.7.1 and 5.4.2 - In the example content the WBP_NGX widget is created using standard practice within the level blueprint. For gameplay, the need is that this be created by the player.
However, if I create a variable of widget class in the player, the players actor components or in the controller and then set that variable to WBP_NGX everything is fine until I reload the project. On reload, WBP_NGX is corrupted. Remove that class specified in the variable I created earlier, save, reload…WBP_NGX widget is fine.
Similiarly, I use the exact same process from an input action inside the character / controller or on component, or from a blueprint placed in the level and specially designed to implement the creation of the widget via interface…as soon as the create widget node’s class, is set to WBP_NGX…the entire WBP_NGX widget is again corrupted on relaunch.
Can anyone help with what is happening here, I’ve got 10,000 plus hours in Unreal Engine and this is baffling. Something about the reference chain coming from a player that is then corrupting the widget on load???
Answer to this problem. Create a soft class reference set to the widget then pass that with a conversion node to the class of the Create Widget node. Finally got annoyed enough to post about this and tried every trick in the book…except for this! WHOOHOOO
Hi there @IntXThOrnN and welcome to the NVIDIA developer forums.
I am not versed enough in UE to understand the issue or the solution, but thank you very much for sharing it here!
1 Like
Hey Markus, thanks, glad I could contribute. Sadly though the method above worked in editor and as standalone from editor, but did not work once packaged. However that is because the widget is soft referenced. I noted that in the sample, the widget is hard referenced by the Create Widget node, inside the level blueprint. This does work, so to fix this completely, undertake the step in my post above, then additionally copy the code from the demo map level blueprint, into your own level blueprint. Break the execution path after the Create widget node, then drag off the widget object reference output and Remove from parent (we don’t want to display it just hard reference it. This means that a hard reference is then picked up in packaging and included in the game release. The soft reference then allows it to run from the player without corrupting blueprints during editor load. Phew… :-)
1 Like
@IntXThOrnN Thanks so much for digging deep into this, you are a life saver. This has been driving us crazy digging through the issues with constant corruption to the blueprints.
I’d be interested if there are any other fixes for this or indeed any other users with this problem.
Short term, great work Jeff.