Unity--A simple way of fading a Texture2D

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

var texture: Texture2D; // the texture to draw

private 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 and Fade(time, true) fades out.




你可能感兴趣的:(Unity--A simple way of fading a Texture2D)