I would put each panel in a separate Scene with a separate Canvas, then just additively load the ones you want, unload them when you no longer need them.
This lets you put all the junk related to that panel in one scene, including animating in, out, sparkles, etc.
Alternately, make each one a prefab and make a factory script that knows how to Instantiate it into wherever it needs to be, and how to remove it.
The only thing you need to handle is stacking / layering, and that can easily be taken care of:
Three (3) ways that Unity draws / stacks / sorts / layers / overlays stuff:
In short,
The default 3D Renderers draw stuff according to Z depth - distance from camera.
SpriteRenderers draw according to their Sorting Layer and Sorting Depth properties
UI Canvas Renderers draw in linear transform sequence, like a stack of papers
If you find that you need to mix and match items using these different ways of rendering, and have them appear in ways they are not initially designed for, you need to:
identify what you are using
search online for the combination of things you are doing and how to to achieve what you want.
There may be more than one solution to try.
Additional reading in the official docs:
And SortingGroups can also be extremely helpful in certain circumstances:
Additive scene loading stuff:
A multi-scene loader thingy:
My typical Scene Loader:
Other notes on additive scene loading:
Timing of scene loading:
Also, if something exists only in one scene, DO NOT MAKE A PREFAB out of it. It’s a waste of time and needlessly splits your work between two files, the prefab and the scene, leading to many possible errors and edge cases.
Two similar examples of checking if everything is ready to go: