So, the more unique materials per game object the more draw calls you’re going to have, and that’s everything for performance.
Furthermore, you want to use the most optimal shaders that you could use for your target platform. When I first started creating my game I had up to 8 unique materials per game object, and my draw calls shot up, and it was an intense load on the cpu, and this is with 64x64 minecraft-like textures! I was getting good performance on my Geforce 1050 Ti, but I was CHOKING on both my snapdragon cel phone and my internal Intel 620 UHD gpu.
If at all possible, you want to combine all of your game objects WITHIN YOUR MODELLING SOFTWARE, not within Unity, and texture atlas to get everything on one texture. Otherwise, you want to look at game objects and figure out which ones are similar looking so you can use the same few materials over and over and over on them, then make them all static so that Unity will static batch them.
On a single bookcase I had my draw calls up to 80 PER BOOKCASE because I was using up to 14 materials, one for the back of the bookcase, one for the front, like 4 unique ones for each book. I went into Blender and, even though it’s a pain in the *ss, painstakingly creating a single UV Map for the entire bookcase, then brought that UV Map into Photoshop and copy and pasted each book image so that I had a bunch of books, the bookcase texture, everything in a single image.
I exported the PNG from Photoshop, then exported the fbx of the bookcase from Blender, and from there brought it into Unity. The draw calls dropped from 80 to 3 or 4 (1 for the png, and then I had dynamic lighting and shadow passes).
All in all, it’s absolutely essential that you use as few materials/textures as you can in your project! Texture atlasing is done within your 3d modelling software, whether that’s blender or 3ds max or even pro builder inside of Unity. It’s done in photoshop, it’s a pain in the *ss and takes a bit of time, but it’s well worth the performance!