public class TransparentMaterial : MonoBehaviour
{
[Range(0,1)]public float alpha = 1;
public Material sharedMat;
private Renderer _renderer;
private Material m;
void Awake()
{
_renderer = GetComponent<Renderer>();
sharedMat = _renderer.sharedMaterial;
}
private void Start()
{
EnableTransparent(alpha);
}
public void DisableTransparent()
{
_renderer.material = sharedMat;
}
public void EnableTransparent(float alpha = 0.5f)
{
if (alpha < 1f)
{
if (m == null)
{
m = new Material(sharedMat);
m.name += "_Alpha";
}
_renderer.material = m;
m.EnableKeyword("_TRANS_ON");
m.SetFloat("_testAlpha",alpha);
m.renderQueue = (int)RenderQueue.Transparent+3;
m.SetFloat("_SrcBlend",5);
m.SetFloat("_DstBlend",10);
m.SetFloat("_ZWrite", 1);
}
else
{
DisableTransparent();
}
}
