How to correctly configure the path of UDeveloperSettings and ensure data is written to disk?

Hi everyone,

I’m trying to use UDeveloperSettings to store user configuration for my UE plugin, but I’ve encountered some inconsistent API behavior that doesn’t match the documentation.

Here’s my setup:

UCLASS(Config = FavoritesPlusRecords, ProjectUserConfig, meta = (DisplayName = “Favorites+ Records”))

class FAVORITESPLUS_API UFavoritesPlusRecords : public UDeveloperSettings

{

GENERATED_BODY()

public:

void SaveAndUpdate()

{

    SaveConfig();

    // Without calling this function, the disk file is not created/updated

    UpdateProjectUserConfigFile();

}

private:

UPROPERTY(Config)

TArray<FSoftObjectPath> FavoriteRecords;

};

I’ve discovered two issues:

1. SaveConfig() doesn’t actually save to disk

The SaveConfig() method’s comment says “Save configuration out to ini files”, but in reality, it doesn’t write anything to the disk file. I have to call UpdateProjectUserConfigFile() to actually persist the changes.

2. UpdateProjectUserConfigFile() writes to the wrong path

When debugging with a breakpoint in the SaveConfig() method, I can see that the target path is:

/Saved/Config/WindowsEditor/FavoritesPlusRecords.ini

This is the correct path I expected for a ProjectUserConfig.

However, UpdateProjectUserConfigFile() actually writes the file to:

/Config/UserFavoritesPlusRecords.ini

This is completely different from what SaveConfig() was targeting!

Questions

1. Is this the expected behavior, or am I missing something in my setup?

2. What’s the proper way to save ProjectUserConfig settings to the correct path (Saved/Config/WindowsEditor/)?

3. Should I be using a different API combination, or is there a specific configuration I’m missing?

Any help would be greatly appreciated! Thanks in advance! :folded_hands:

Off-topic, I can’t help but complain, this document editor is really difficult to use! :persevering_face: