changing secondary texture dynamically?

I want to change the texture of a secondary material on my 3d model ( a smiley face, in this case).

When I use renderer.material.mainTexture, it changes the base texture of my model, and not the face texture
Here is a screenshot of what my current texture/material set up is.

So, when I apply mainTexture = xyzTexture (example), the Texture of “body” gets changed whereas I want to change the texture of “happy”
Anyone know any way to do this?

You use Material.SetTexture(). Note that the name to used is the one in the shader, which may be different from the one shown in the Inspector. You may have to open the shader to get the name.