Why is only the last Material in the Materials array on a Mesh Renderer used?

I am trying to apply Diffuse, Specular, and Normal maps to a single mesh. I have the Diffuse map in a Diffuse Material, and the Specular and Normal maps in a Bumped Specular Material. After placing both materials in the Materials array on the object’s Mesh Renderer Component, only the last material in the array is used. If the Diffuse material is the last material, then I have a colored mesh with no specular or normal map applied. If the Bumped Specular material is the last material, then I have an uncolored mesh with specular and normal maps applied.

You can’t combine materials like that; you’d need to use a single shader with a single material that contains all the elements, which in this case is the Bumped Specular shader. The reason you’d use an array of materials is if you had a mesh with submeshes, so each material gets applied to a different submesh.

You can stack materials on the same mesh, but in your case what’s probably happening is that only the top material is showing because it’s covering all the previous materials. In other words, the last material in the array being applied.

To prove it you could grab a texture with some alpha sections in it and create a new material with a shader that handles transparency, then apply it as the last material in the array. Other materials (and their textures) should show through the alpha sections.