- Home /
Multiple Materials on Multiple Objects -runtime-
Hello guys, i've searched through every question about changing materials, but i couldn't find my specific answer, so here i am, hope you can help me somehow :)
I have a group of Objects in my scene that need to change material by launching a script with an eventfunction in ngui. My script-question is, if 20 objects in the same scene share the same material, is it possible to switch from material 1 to material 2,and all the 20 objects switch material from 1 to 2 in runtime, without using render.material alternatematerial on every object?
Thanks in advance for you reply, please, keep it simple, really willing to learn, but it's difficult.. and eventually sorry for bad english :)
What is different between the materials? If they are the same shader, then changing the material will change all of the objects.
Thanks for you reply, they have different shaders, otherwise would have been better texture swhitching i guess, what i'm looking for is that when i choose material2 from my list (in a ngui menu), a script change or switch the material1 (example:bumped diffuse with mytexture1) into material2 (example: specular with mytexture2) and so on, when i change to the new material, it substitute the previous one, an then all of the objects who had material1, now has material2.
Answer by cimopimko · Apr 05, 2014 at 06:43 PM
I'm still looking for someone who has simpler and less resources consuming idea, but in the meanwhile, if someone has this question too, this can be one method, a bit "rural" but works :)
Just create a similar script, one for every material you wanna change your multiple objects to:(to be called with a gui or ngui button as event onclick\onselect or add a trigger function if it's what you need)
var Material2 : Material;
var Object1 : GameObject;
var Object2 : GameObject;
var Object3 : GameObject;
function Start () {
}
function Update () {
Object1.renderer.material = Material2;
Object2.renderer.material = Material2;
Object3.renderer.material = Material2;
}