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.