- Home /
how to change a material in materials[]
This should be simple but I'm stumped. I want to assign a material to the renderer.materials array. In the unity script reference for renderer.materials there is the following note:
Note that like all arrays returned by Unity, this returns a copy of materials array. If you want to change some materials in it, get the value, change an entry and set materials back.
I don't really know what that means. Below is my non-working code:
renderer.materials[1] = replacementMaterials[materialChoice];
Answer by DaveA · Jul 12, 2012 at 07:59 PM
Try this:
var mats = renderer.materials;
mats[1] = replacementMaterials[materialChoice];
renderer.materials = mats;
perfect thanks! Now I understand what the script reference was saying. I'm using c# so below is the same code in c#:
$$anonymous$$aterial[] mats = renderer.materials;
mats[1] = replacement$$anonymous$$aterials[materialChoice];
renderer.materials = mats;
Glad to help, thanks for posting c#, please click the checkmark to accept this so we know it's answered.
how would the full unity c# script look for this? Ive searched far and wide and only seem to find snippets everywhere with no clue on how to patch them together? I want my gameobject (chair) (with different materials on it (one for wood, other for plastic), to change via an interface. Similar to https://youtu.be/admsmCmaL3Y?t=55.
Been trying to figure out all day how to change just one material in an array like this. Waiting for my Quest 2 to recharge before I can try it again but if this works, Dave you're a hero.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
How do I attach a Created Material A Texture, NormalMap and OcclussionMap? 0 Answers
Creating Material in Unity from using data from 3ds Max v-Ray Material Export with a Max script. 1 Answer
Having a problem with the second material (on the same renderer) 0 Answers