Is there a simple way of fading a Texture2D

Hi,

Is there a simple way of fading a Texture2D used in gui? Something like

Fade(Texture2Dcopy , fadeTime, "In");    
//Fades a Texture2D copy over the course of fadeTime, using a specific type of fade

Im not using a GUITexture. I know how to set up the function…but not sure how to change the actual alpha of the texture.

Any thoughts?

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.