Let's FINALLY fix Editor Preferences in UE5

Ok, yeah, I see what you mean.


Looking into it more, I found some good news: it already works halfway like you want it to. The priority order of the settings are Project → Project Defaults → Engine Defaults (e.g. EditorPerProjectUserSettings → DefaultEditorPerProjectUserSettings - > BaseEditorPerProjectUserSettings). Any setting that is missing from the project settings is read from the project defaults, and if it’s missing from there, then it’s read from the base, which is where the true defaults are.

I tested this by changing a setting in the base and opening an existing project; the change propagated to that project. I changed it back, tested again, and it propagated again. I even changed it while the editor was running and clicking “Reset to Defaults”, and it worked. So the editor already syncs settings between projects; you just have to make sure not to change it in your project (and if you do, you can just use “Reset to Defaults”).

But this still leaves you with the problem of “how do I change settings in the editor and sync it to all other projects?” Well, once you modify a setting in a project, it is added to a project-specific file. Once you click “Set as Default”, it saves it in the project’s default file. So all you have to do is copy it from the default file to the base file, and that’s it. Of course, you have to write a script to do this, but it can be done super simply in something like batch or a plugin, and once you write the script, it’s fully automated.

For the script, you just read the setting from the default file, find it in the base file, and replace the value. However, it even works when appended to the end of the base file (i.e. there are two instances of the same setting with different values); the last instance overrides the first. So really, you can skip the "replace part and just make a new section at the end of the base file called “User Defaults” and append them there.

NOTE: There are some true project-specific settings that reference directories in the project itself, but so far, I’ve found only a few, so it shouldn’t be hard to catch them (just check for either /game/ or /*project name*/ in the setting).


Once again, I get this is a workaround, but it’s simple and solves your problem. I get you want Epic to implement it natively (and I agree), but this solution will at least solve the problem on your side, as well as anybody else who needs it.

On Epic’s side, the only thing they need to do is add a “Set as Base” button that sets them in the base file; unless I’m missing something, it’s really that simple; you can even implement it as a plugin.


1 Like