# How to properly use prefabs with 2D game?

I have a concern about prefab's purpose.

When I create a npc like a monster with all it's animations, script etc, I then create a prefab to instantiate it.
When I want to insert different monster which are quite similar to the first one I created I wonder to understand what's the Unity base idea to deal with. My thought is that the prefabs should be kept the minimum essential numer possible and to call different functions to initialize time by time differently depending on specific needs.
But, how to deal with animators and animations in general? There is any shortcut of creating one prefab for each monster? I'm asking because I can't find any clear way to dinamically attach animators to a generic gameObject. Since I cannot have one Animator where I replace dinamically sprites involved the simplest (but not so smart) way I found is to create duplicates of prefab and attach editor side all these graphic components.

What would be the best approach to deal with this?

• How similar do you mean by "quite similar". Do they have exact same features and scripts? There is a video by Unity where the presenter has a script that changes only the sprite at runtime. Are you looking for something similar? Link to video: youtube.com/watch?v=rMCLWt1DuqI – SanSolo Oct 25 '15 at 14:08

Prefabs work best when there will be multiple instances of any particular structure across your game. For example a Red Monster might have a red texture and do 10 damage to player via a monsterDamage variable (publicly exposed on a script). Another monster might be Green Monster, and it does 20 damage to the player, and also uses the same script as the red monster but with the monsterDamage modified via the inspector.