- Home /
MeshRenderer.materials
Hey guys I'm probably doing something really silly, but I've been trying to generate a mesh with multiple materials through script. Everything else works great, but I ran into some strange behavior with MeshRenderer.materials
Basically if I set the material (singular) property to an existing material everything works fine, but if I try to set it through materials it gets ignored and I'm not sure why.
GameObject gameObj = World.Instance.GetObject(); Material mat = World.Instance.GetMaterial(); MeshRenderer meshRenderer = gameObj.GetComponent<MeshRenderer>();
// Works fine //meshRenderer.material = mat;
// Does nothing meshRenderer.materials = new Material[1]; meshRenderer.materials[0] = mat;
// However this gives me the color component of my material meshRenderer.materials[0].CopyPropertiesFromMaterial(mat);
Also if someone knows how the four material properties relate to each other, material, materials, sharedMaterial and sharedMaterials I'd love to know. For example if I wanted 1 shared material and 2 instanced materials how would I set that up?
Also I just realized I never actually tried it with more than one material, I don't know if that would make a difference.
Thanks.
Answer by Noam · Oct 31, 2010 at 01:22 PM
Some properties in unity don't work as expected. Lots of Getters actually return a copy of the datastructure, and not a pointer to it. Try creating a Material[] array yourself, setting all of its properties (like you did) and then run
meshRenderer.materials = myMaterialArray;
etc.
Ha, no kidding, that worked just fine. Thanks for the help, much appreciated.
Thanks for this! A small work around, but definitely worth it
Your answer
Follow this Question
Related Questions
How to change a specific material of an object ? 0 Answers
Renderer with multiple materials -- per-material MaterialPropertyBlocks? 1 Answer
Material vs. SharedMaterial - difference in SETTING? 1 Answer
Getting mesh material length 1 Answer
Is it better to use multiple materials or bake texture on low poly assets? 2 Answers