- Home /
One Prefab and two different object materials
Hi
I have created a prefab for a tree object, i have triggers etc and child objects which i have put into a prefab, now i wanted to create a different tree (theme colour) so i created another prefab. But both prefabs have the exact same setup with scripts and structure other than the material applied to the one tree object model is different.
Now it would be good to have one prefab but have the option to use a different material without having to create a new prefab for each tree colour. I tried this but when i apply changes it updates all of them. Is there a way i can combine them into one prefab but switch materials and not have it revert back to the default when i click the prefab apply button?
Im guessing i cant but worth a shot.
Nick
Answer by Kossuranta · Feb 20, 2017 at 03:14 PM
No you can't and actually it would make no sense. The sole idea behind prefabs is that you can change the prefab and all objects that are made from it are changed at the same time (they are technically exact clones unless modified after instantiate).
Depends what you are trying to do, but in some cases you could create script that changes the material in certain circumstances or chooses random material at awake. https://docs.unity3d.com/ScriptReference/Renderer-material.html
Answer by SamElTerrible · Feb 21, 2017 at 09:42 AM
One thing you could do is create a public material array at the top of your tree script, then drag the materials into the array in the editor, and add some code to switch the materials depending on what you want.
For this you'll need access to your renderer and have something like:
myRenderer.material = materialsArray[element number of the material you want];
Answer by coxy17 · Feb 21, 2017 at 05:51 PM
Thanks guys. I guess it makes sense. I'll go ahead and add a script in to set the material. I just wanted to see it in the scene view with various materials switched so I could visualise the country scene I was making. When I ran it it just defaulted to to one in the prefab haha. So got me frustrated haha. My own fault. It would be nice to have some sort of prefab override for scene instances of it. As im not instantiating anything.
Your answer
