Unity共同材质设置不同参数
在我们日常使用Unity中,经常会遇到一个问题,当你多个物体共用一个材质的时候,当你需要调其中一个物体的材质参数,你在设置面板修改一个物体的材质的参数,其他物体的也会跟着改变,这就违背了我们的需求,然而,对于这个问题,Unity也给出了解决方案,长话短说,直接上代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestMat : MonoBehaviour {
// Use this for initialization
void Start () {
MaterialPropertyBlock propertyBlock = new MaterialPropertyBlock();
GetComponent<Renderer>().GetPropertyBlock(propertyBlock);
propertyBlock.SetColor("_Color", new Color(0.5f, 0, 0, 1));
GetComponent<Renderer>().SetPropertyBlock(propertyBlock);
}
// Update is called once per frame
void Update () {
}
}
代码挂载在你需要改变的物体的gameObject上面,效果如下:
以下这些参数可以被设置的:
_Color
_MainTex
_Cutoff
_Glossiness
_Metallic
_MetallicGlossMap
_BumpScale
_BumpMap
_Parallax
_ParallaxMap
_OcclusionStrength
_OcclusionMap
_EmissionColor
_EmissionMap
_DetailMask
_DetailAlbedoMap
_DetailNormalMapScale
_DetailNormalMap
_UVSec
_EmissionScaleUI
_EmissionColorUI
_Mode
_SrcBlend
_DstBlend
_ZWrite