for (int i = 0; i < trans.transform.GetComponent<Renderer>().materials.Length; i++)
{
trans.transform.GetComponent<Renderer>().materials[i] = M1;
}
这样单独是赋值不了的 因为
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.
必须首先创建一个material的数组缓存 整体替换
Material[] newBufMat = new Material[trans.transform.GetComponent<Renderer>().materials.Length];
for (int i = 0; i < trans.transform.GetComponent<Renderer>().materials.Length; i++)
{
newBufMat[i] = M1;
}
//整体替换 才能生效
trans.transform.GetComponent<Renderer>().materials = newBufMat;