We are using the Variant Manager to capture actor properties into presets, batch edit the properties, and then apply them back at runtime. However, during usage we discovered an issue: after saving, sometimes the Blueprint classes inside the Variant Manager are lost, which causes the asset to become corrupted.
There is a very simple way to reproduce this problem:
Create a level, create a preset, drag in any actor, then right-click to bind a function. At this point, a UI appears that allows jumping to the Blueprint. However, after editing these, if I rename the Level Variant Sets, save, and then restart the engine, when I try to open this function binding again, it will show that the Blueprint is corrupted and cannot be opened.
We recorded a simple video to reproduce this issue:
Apologies for the delayed response, and thank you for the detailed report and repro video.
I was able to reproduce this issue in both UE 5.6.1 and the current UE 5.7.0 preview build. Could you please confirm whether the same behavior occurred in previous UE 5.x versions as well?
I’ll run additional tests on my end before confirming the bug and submitting it to Epic for review.
I’ll update you here once I have more information.
After reviewing the engine code, I found that this issue stems from how ULevelVariantSets serializes its internal Director Blueprint references. When a function caller is added, the asset creates a Director Blueprint with the ULevelVariantSetsFunctionDirector class. However, during operations like rename or duplicate, the Director’s GeneratedClass reference isn’t properly re-assigned to the new asset, causing the renamed or duplicated asset to retain invalid references to the original which leads to corruption after saving or restarting.
As a temporary workaround, you can patch the engine to automatically fix up the Director ownership and class references after these operations.
With these changes in place and the editor rebuilt, you will be able to perform operations like duplicate or rename on the desired LevelVariantSets asset. In the case of renaming, you may still see an empty package left behind from the old name when renaming. This old asset can be safely deleted after restarting the editor.
Please let me know if this solution helps your case and unblocks your workflow.
I’ll also file a bug report so this can be addressed in a future engine update.
I’m glad to hear the workaround helped. I’ve submitted a bug report for this issue so that the internal engine team can investigate and implement an official fix. In the meantime, you can continue using the provided workaround without concern.
I’ll go ahead and close this case for now, but please feel free to reply here if you need any follow-up on this topic or open a new case for any other questions.