How do make interchangable objects on a character?

I’m trying to understand how I would go about creating custom objects to place on a character or another object. For example, if I was making a character that could wear different armor, how would I go about making the different pieces of armor connect to the character the correct way each time? Do I create some kind of connection point on the character and on the armor? Would i have to do things differently if I wanted different armor on different types of characters. For example, if I had a human wearing many different hats vs a dog wearing many different hats, could those hats be the same set of hats? Sorry if this is too many questions to ask at once.

You can create a hat and place it over an empty gameObejct working like a bone in 3d frameworks. So you can set up the gameObject in the place you want (can be the center of the head, the side of it) so the you instanciate the hat in the exact position and rotation of the empty gameObject and place it as the parent of the hat, so if the gameObject is in the player or dog, when the player or dog moves the gameobject will move and the hat too.