Unity--A simple way of fading a Texture2D

来源:互联网 发布:叫出租车的软件 编辑:程序博客网 时间:2024/06/06 00:14

You can control the texture alpha with GUI.color.a:

var texture: Texture2D; // the texture to drawprivate var alpha: float = 1.0;private var fading = false;function Fade(fadeTime: float, in: boolean){  if (fading) return; // aborts other calls to Fade when already fading  fading = true; // starts fading  var t: float = 0.0;  while (t < 1.0){    t += Time.deltaTime/fadeTime;    alpha = Mathf.Clamp01(in? t : 1-t); // copy t or 1-t to alpha    yield; // continue next frame  }  fading = false; // fading ended}function OnGUI(){  GUI.color.a = alpha; // alpha ramps 0->1 or 1->0 when fading  GUI.DrawTexture(Rect(...), texture); // draw the texture  GUI.color.a = 1.0; // restore alpha for other GUI elements, if any  ... // other GUI elements}

If you want to fade to some color, draw a colorful mask after the main texture and control its alpha:

var mask: Texture2D; // drag the mask here...function OnGUI(){  GUI.DrawTexture(Rect(...), texture); // draw the texture  GUI.color.a = alpha; // alpha ramps 0->1 or 1->0 when fading  GUI.DrawTexture(Rect(...), mask); // draw the mask  GUI.color.a = 1.0; // restore alpha for other GUI elements, if any  ... // other GUI elements}

NOTE 1: Call Fade(time, true) to fade in and Fade(time, false) to fade out;
NOTE 2: When fading to a color, the logic is reversed - Fade(time, false) fades in andFade(time, true) fades out.