unity小技巧备忘录1使用代码单物体同时存在多个材质,使用代码更换指定材质

单物体同时存在多个材质,更换指定材质

首先直接尝试替换材质数组单个元素

public Material mymt;
void Replace()
{
	  GetComponent().materials[2]=mymt;
}

事实证明上面的方法并没有什么卵用

网上找了半天,经过测试,目前了解到大概有三种方法可行

  1. 新建材质数组,直接更换材质数组。优点就是任何材质都可以替换。
    public Material[] customMt; public void Replace() { GetComponent().materials = customMt; }
  2. 直接替换目标材质的贴图,这种方法有弊端,就是如果连材质金属度等属性都要改的时候,就很麻烦了。
 public Texture texture;
    public void Replace()
    {
        GetComponent().materials[2].mainTexture = texture;
    }
  1. 比较实用的方法来了,使用Material .CopyPropertiesFromMaterial方法来直接修改材质各项属性,其实就是将上面目标材质的属性复制到目标材质,这种方法只适用于同种材质之间。
public Material mymt;
    public void Replace()
    {
        GetComponent().materials[2].CopyPropertiesFromMaterial(mymt);
    }

第一次写自己的博客,以后我也是大佬啦(梦真香)!

你可能感兴趣的:(unity学习技巧)