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.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值