- Home /
How to share material between meshes
I know this has been asked a lot here. However, I can't seem to get the hang of it. I instantiate new GameObjects through my code like this
Tile3D clone = null;
Tile3D master = //some method to get a prefab;
if(master != null)
{
clone = (Tile3D) UnityEngine.Object.Instantiate(master);
clone.renderer.sharedMaterial = master.renderer.sharedMaterial;
}
Tile3D is a script of mine which contains a few properties important for my game, but does nothing with the renderer or materials. The clones are then added each as a child of a different GameObject. Now when I instantiate a new object, it always creates a new instance of the material. At least that's what I assume, since the Inspector shows the material name for the new object with an "(Instance)" appended. I also tried it without explicitly assigning the materials, and with a few combinations of material and sharedMaterial on either side. However, nothing I do there seems to have any effect. What do I have to do to use a truly shared material for all my GameObjects?
Answer by Zibber · Jun 27, 2013 at 02:14 AM
If you use sharedMaterial then it should not be an (Instance). The only reason I could see there being an (Instance) is if the Tile3D master is using an (Instance) of a material and then sharing that to the clone.
Your answer
![](https://koobas.hobune.stream/wayback/20220613104817im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
When generating prefab, i cant load images from either resource or assetbundle 2 Answers
Instantiating model gameobject that is not tied with original asset 0 Answers
Keep replaced materials of a Game Object even after ending the Play Mode C# 0 Answers
Changing material at runtime messes up with prefab materials [Solved] 1 Answer
Problem getting prefab color 0 Answers