A Level Instance or Packed Level Actor can be created through editor scripting by using function ULevelInstanceSubsystem::CreateLevelInstanceFrom(), which receives parameters packed in the FNewLevelInstanceParams structure.
When parameter "LevelPackageName" is set and "bAlwaysShowDialog" is false, it is expected that the new assets be created with the supplied name without further user input. However, the dialog box for the level name still pops up (and does not even use "LevelPackageName" as the default name), and only the blueprint asset is automatically saved with prefix "BPP_" followed by the chosen level name (by the way, there could be a different parameter for that).
The bad behavior seems to be rooted in file [Engine\Source\Runtime\Engine\Private\LevelInstance\LevelInstanceSubsystem.cpp], line 1416 on UE 5.6 or 1431 on mainline latest, where structure EditorLevelUtils::FCreateNewStreamingLevelForWorldParams is being filled. The structure is initially created with "LevelFilename" correctly set, but then its parameter "bUseSaveAs" is always set to true instead of, for example, "LevelFilename.IsEmpty()". As a result, function UEditorLevelUtils::CreateNewStreamingLevelForWorld() always calls FEditorFileUtils::SaveLevelAs() instead of FEditorFileUtils::SaveLevel() with the supplied default filename.
In C++, for example in a Blueprint Function Library inside an Editor-only module, call ULevelInstanceSubsystem::CreateLevelInstanceFrom() with parameter "LevelPackageName" set and "bAlwaysShowDialog" as false.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-309562 in the post.
0 |
Component | UE - World Creation - Worldbuilding Tools - Level Instances |
---|---|
Affects Versions | 5.6, 5.7 |
Created | Aug 6, 2025 |
---|---|
Updated | Sep 11, 2025 |