Setting Overlay Materials at Runtime

I’m trying to have a dynamic overlay material appear on my character at the press of a button.
My question is, can I set the overlay material to my material at runtime on the button press (in blueprints via Set Overlay Material) or do I have to have the overlay material set on the character asset in the construction script? And if it’s the second option, can I deactivate it without having it just be translucent?

You can make an apply MIDs(material instance dynamic) during runtime, but keep in mind that there’s a cost to swapping materials during runtime and depending on the complexity, it may cause a hitch. You can so use things like Material Parameter Collections to store global variables that can then be used by any material to drive effects. Like for instance, if you had a wetness variable in an MPC, you could pull the value for a box material, tree material, ground material, etc, to control some aspect of their visuals like some lerp that drives an animated wetness effect.