Unable to create a 'World Soft Object Reference' Variable in a struct

Related to UE-60933 (Unreal Engine Issues and Bug Tracker (UE-60933))

It is possible to get around this issue in some cases by creating a node that uses a WorldSoftObjectReference, and then pulling from it and promoting it to a variable.

HOWEVER, this workaround obviously won’t apply to BP structs, so you cannot store WorldSoftObjectReferences in structs (making it hard to mark up map references with metadata for instance).

Is this functionality intended? It doesn’t seem like it would be since the variable type doesn’t show up in the variable type list but is totally possible to create (in the context of a Blueprint) by promoting a pin to a variable.

Epic really half ■■■■■ Blueprints, didn’t they? :frowning:

I ran into this problem too.

For me, the solution was to create my own struct in C++. This of course takes a little bit of learning to get started, but it’s quite basic. You can then just use these in your Blueprints, as if you created it through the editor. It won’t be located in your Content Drawer though.

Here’s what my .h file looks like:

#pragma once

#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "SequenceLevelStruct.generated.h"

struct FSequenceLevelStruct

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		TSoftObjectPtr<UWorld> Level;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		bool otherVariableOne;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		bool otherVariableTwo;

Its 2023 and I can confirm this is still an issue.

You cannot add World Soft Object reference to a struct without C++

1 Like

jep, only way i found was to create a load stream level node (or any node) which takes a level as an input, right click the in port and promote variable.

you can then go ahead and convert it to array:
and cycle through your selected lavels via an index for example: