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 }
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.