My game has a few different UI scenes - a splash/loading screen, the main frontend, the ingame HUD, the pause menu (incorporating a few different screens in one scene), etc. I'm using reference atlases and fonts to be able to switch to HD on some platforms. The only way I know how to do this is to have each scene contain an instance of each atlas and font I want to use in the game (1 atlas and 4 fonts, at the moment). I've made a prefab called AtlasAndFontReferences, which contains the atlas and the fonts and the scripts which change the references when Start() is called. There's one of these prefabs in each scene. This works fine so long as everything in the scene points to the corresponding AtlasAndFontReferences for the scene. Where it falls down is (for instance) when a scene loads prefabs at runtime (HUD text score popups, shop/inventory items, etc). The code then has to "manually" change all the sprites and labels in the prefab to point towards the atlas/fonts in that scene's AtlasAndFontReferences, otherwise they end up pointing to the original prefab, which I don't think I should be changing at runtime. This is a bit messy and problematic.
My question is this: Am I completely insane? It really doesn't make sense to try to shoehorn the entire UI for the whole game into a single scene, but do I really need to maintain a set of reference atlases and fonts for each scene? Or is there some way to have some kind of static, central set of them which can exist in every scene?