- Home /
How do I access secondary maps through c#
I have been trying to figure out how to access this second detail texture through c# since you access the normal one using renderer.material.maintexture
however I can't seem to access this detail one.
I have looked around a bit but haven't found a solution can someone help?
Answer by hanger · May 18, 2015 at 06:16 AM
You can use renderer.material.SetTexture("_DetailAlbedoMap", texture). You can find the texture names (like _MainTex) if you right-click the inspector switch to Debug mode (under Saved Properties). You could also download the standard texture pack from the site and read the texture scripts, though the standard shader is very complicated.
Note that if you mess with material properties for a lot of objects, then this will duplicate a lot of materials. Calling renderer.material will duplicate the material unless that render already has exclusive use of the material. You can mess around with render.sharedMaterial, but that often leads to unexpected results. (Still useful for changes to a group of renderers at once.) The best way is generally renderer.SetPropertyBlock. It is a bit more cumbersome to use, but the way it works is that it keeps a set of overrides to the material for the specific renderer. When you set the block, it wipes out the old set of overrides and replaces it with the set you give it. Also, when you call SetPropertyBlock, it copies those fields internally, so you only need to allocate one block object for each set of fields.
Your answer
Follow this Question
Related Questions
Everty 3D objects tinted blue after upgrade unity version 0 Answers
How can i get my quad to only render my texture without stretching it? 1 Answer
Mipmap view not working in editor. 0 Answers
Object turns pink when changing material at real time: 1 Answer
Messy normals with Transparent material 0 Answers