What is the best approach to texturing with multiple/dynamic materials

Hi all, new to gamemaking and I’m making an FPS on my own.
So I’m working in Blender to make my models, and possibly animations when I get to it.

My question is this:
How can I have what is essentially multiple materials on a single model, along with dynamic textures?

What I mean is as follows.
I have a model that is currently made up of multiple objects and UV/texture maps.  This is because I want the different components to be “made of” different materials, such as gunmetal, stainless steel, carbon fiber, and glass.  Obviously, these all have different reflective properties.  I also want the option of having multiple “skins” for a single object, like camouflage or overlaid symbols on the model.

Now, I’m not sure the best way to bring these into Unreal.  I don’t (want to) believe that I would need a different model for each case.

Further, I want to approach this without the need for an alternate first-person model - I’m not sure if it’s possible to do it the way that I want.  But, assuming that it is, I would only need one model for a weapon being picked up or on the ground.  How would I approach something like a light turning on when a weapon is picked up?  Obviously an if-then script for turning it on and off, but I mean as far as approaching it from the texturing/materials side of things.

I think my current model is low-poly enough that I can use it directly, since I haven’t sculpted it, though it is a fairly detailed weapon.
Currently, it’s made of multiple objects, so I can put different materials on different components.  I feel like this may not be the best way to import it into Unreal, but I honestly don’t know.  Would the best approach be to put a bunch of materials on my weapon, bake it, combine the objects into one and import it into Unreal, then create skins in Unreal using UV mapping such that it only affects the parts of the gun that I want to be recolored/reskinned? Then, if I want different light qualities (besides color), I’d need a different model?  Or would having multiple materials mean bringing it in as separated objects, each with its own UV map, basically meaning that generally I’d want to keep materials essentially the same across a model (or at least across a UV map, considering I’d want to probably reuse the maps to make my life easier down the line)?

I’m fairly certain that for hi-poly objects, I’d want to bake it and then retopologize - would this mean I’m stuck with a specific coloration for that model?  Because I’d want to be able to apply alternate colorations and overlay symbols, if possible.

That’s essentially my understanding of the options so far, but I’d really love some insight on how to approach this, please!

Bumping for clarity.
From what I’ve been learning, it seems like a good workflow would be to make a hi-poly model, texture it however I want (with the individual objects being made of whatever materials I want), create a low-poly model, bake it with the hi-poly model’s properties such that it has the appearance of being made of whatever materials I want, then transfer that low-poly model and the according material maps to the game. Then if I wanted to change the coloration/texturing in the game, I’d just need a color map and a way of changing between the maps, but I’d keep the other maps (that determine reflection, refraction, transparency, etc) the same.
Sound about right?

So in blender, you can apply material slots to selections of vertices on the same model. These material slots will be preserved in unreal upon import, and you can apply a different shader per each in the static mesh editor.

Interesting. So if I have multiple bump maps, normal maps, etc and applied them to vertex selections, I could essentially create a single UV map of different “materials”, then just apply various diffuse color maps within Unreal, minimizing the amount of materials being used in-game?
Is my most recent comment on the question pretty correct, workflow-wise?

Your Model can have the same texture. You will need to use a “Material Instance Constant” to change the color of your model ingame…You will need to use a mask on the uv map to determine what part of the model whose color you want to change.