There are actually two completely unrelated kinds of materials in Unity: Renderer materials (which define how things are rendered) and physics materials (which define how rigidbodies behave when they bump into each other). But if you are talking about color, you are likely talking about renderer materials.
Generally speaking, you can assign a material to any game object which has a Renderer component. There are lots of different kinds of renderers. MeshRenderers for 3d models, SpriteRenderers for sprites and a couple specialized ones like LineRenderer or TrailRenderer. But one thing all renderers have in common is that they all use materials (in some cases more than one, for example when you have a 3d model which uses multiple materials then the MeshRenderer will have a separate material slot for each of them).
It is possible that your "Person" is just a hierarchical object which has no renderer itself but has several children which do. In that case you will have to assign the material to each of the renderers of the children.
If you want to do that from the editor, then you will have to select each of the children and assign the material to their respective renderers.
If you want to do that from a script, you can get an array with all the renderers in all the children using GetComponentsInChildren<Renderer>()
. It returns an array of Renderer
interfaces. This interface represents the lowest common denominator of the functionality of all the specialized renderers and only exposes those functionality they all have in common. One of those is renderer.material
.