使用颜色插值实现屏幕淡入淡出效果
1 public class FadeInOut : MonoBehaviour 2 { 3 //本类实例 4 public static FadeInOut Instance; 5 //控制淡入淡出的快慢 6 public float fadeSpeed = 0.01f; 7 //淡入淡出图片 8 public RawImage fadeInOutImage; 9 //控制淡入淡出图片的alpha值(0,1) 10 private float _curValue = 1; 11 //控制淡入的开关 12 private bool _bFadeIn = false; 13 //控制淡出的开关 14 private bool _bFadeOut = false; 15 16 void Awake() 17 { 18 Instance = this; 19 } 20 21 void Update() 22 { 23 if(_bFadeOut) 24 { 25 FadeOut(); 26 27 } 28 else if(_bFadeIn) 29 { 30 FadeIn(); 31 } 32 } 33 //淡入效果 34 private void FadeIn() 35 { 36 fadeInOutImage.color = Color.Lerp(fadeInOutImage.color, Color.clear, Time.deltaTime * fadeSpeed); 37 _curValue = fadeInOutImage.color.a; 38 if (_curValue <= 0.05f) 39 { 40 fadeInOutImage.color = Color.clear; 41 _bFadeIn = false; 42 //禁用Image,防止遮罩,按键不能点击 43 fadeInOutImage.enabled = false; 44 } 45 } 46 47 //淡出效果 48 private void FadeOut() 49 { 50 fadeInOutImage.color = Color.Lerp(fadeInOutImage.color, Color.black, Time.deltaTime * fadeSpeed); 51 _curValue = fadeInOutImage.color.a; 52 if (_curValue >= 0.95f) 53 { 54 fadeInOutImage.color = Color.black; 55 _bFadeOut = false; 56 } 57 } 58 59 //外部调用,开始淡入 60 public void StartFadeIn() 61 { 62 fadeInOutImage.enabled = true; 63 _bFadeIn = false; 64 _bFadeIn = true; 65 _bFadeOut = false; 66 } 67 //外部调用,开始淡出 68 public void StartFadeOut() 69 { 70 fadeInOutImage.enabled = true; 71 _bFadeIn = false; 72 _bFadeOut = true; 73 } 74 }
需要播放淡入效果时,在外部调用该类的StartFadeIn方法;需要播放淡出效果时,在外部调用该类的StartFadeOut方法。