“Soft” references are Structs with a String inside.
They are “value variables”. Can be saved in any way, inside Structs, in Arrays, etc.
“Class Reference” or “Object Reference” is a pointer to an object.
The plugin only restore those pointers if the referenced object exists by the time of loading the game from file.
“Auto Respawn” options in Plugin Settings will auto spawn any instance of a class if the lost pointer to the instance is from a class you have white-listed there and then it will restore the reference variables pointing to that instance of your object. It can do this for variables of references within any class (variables marked Save Game), within Sets, within Arrays, within Maps, within Objects.
However you should only white-list for auto-respawn, in plugin settings panel in Unreal Editor, classes that you create as direct children of the *UObject *class or children of *UAutoInstanced *class.
Why? Because people previously were adding there to the auto respawn list internal engine classes and then complaining about game crashing when the plugin spawns a instance of something it shouldn’t spawn.
Maps expect to be a TMap< FName , YourObjectReference > or TMap< YourObjectReference , anything >, if the Map key type isn’t either an Object Reference or a FName the plugin will complain in your logs saying it doesn’t know what you’re trying to do…
Those TMaps< YourObjectReference >,* TArray< YourObjectReference >*, *TSet< YourObjectReference *> and plain YourObjectReferencevariables work just fine when the variable is stored inside your Blueprints.
IF they are stored inside a Struct (then the Struct used in the Blueprints) however, you should see an error log telling you why the plugin won’t save those references for you. Epic have set in deep engine code an intentional crash if the plugin goes there to save references that aren’t inside a UClass, so the plugin will give up on references (not Soft ones) that are member of a Struct to avoid crashing your game, it can see the references, it just skips them :]
All other normal types like Int, Float, String, etc, they are common “value types” so they are pretty much universal, the plugin can see and restore their values in Structs or Objects, anywhere.