有时候想把游戏做的酷炫一点 也不想用动画去处理 这通过控制Alpha改变其透明度来控制显示和隐藏(Alpha=0隐藏;Alpha=1显示)
如果想实现UI的渐变需要给UI加上Canvas Group组件然后添加一个脚本在该UI上。
float alpha = 0.0f;
float alphaSpeed = 2.0f;
private CanvasGroup cg;
void Start()
{
cg = this.GetComponent<CanvasGroup>();
}
void Update()
{
if (cg.alpha != alpha)
{
cg.alpha = Mathf.Lerp(cg.alpha, alpha, alphaSpeed * Time.deltaTime);//消失
cg.alpha = Mathf.PingPong(Time.time / 5f, 1);//乒乓 若隐若现的效果
}
}
public void Show()
{
alpha = 1;
cg.blocksRaycasts = true;//可以和该UI对象交互
gameObject.SetActive(true);//激活
}
public void Hide()
{
alpha = 0;
cg.blocksRaycasts = false;//不可以和该UI对象交互
gameObject.SetActive(false);//未激活
}
实现3D物体的渐变
调节render里材质的颜色和透明度
float alpha = 0.0f;
float alphaSpeed = 2.0f;
private CanvasGroup cg;
private Renderer render;
void Start()
{
render = gameObject.GetComponent<Renderer>();
}
void Update()
{
if (render)
{
float r = render.material.color.r;
float g = render.material.color.g;
float b = render.material.color.b;
//alpha = Mathf.Lerp(1, alpha, alphaSpeed * Time.deltaTime);
alpha = Mathf.PingPong(Time.time / 5f, 1);
render.material.color = new Color(r, g, b, alpha);
}
}