Unity3D屏幕淡入淡出效果
作者:互联网
要求:
A:编写脚本实现屏幕的由深色灰蒙蒙,到屏幕清晰的过程。
B: 再扩展到屏幕由清晰,逐渐到屏幕发暗,变灰蒙蒙,最后完全发黑的效果。
C:推荐对于淡入与淡出效果的时间,进行自定义处理。
核心算法:
1:使用Color.Lerp() 核心插值计算。
2:使用Rawlmage组件的color属性的a透明度属性衡量最后屏幕的状态。
3:定义两个字段,分别实现屏幕淡入,与屏幕淡出效果。
4:定义脚本的“单例模式”,
1 /** 2 * 3 * 场景的淡入淡出 4 * 5 */ 6 using System.Collections; 7 using System.Collections.Generic; 8 using UnityEngine; 9 using UnityEngine.UI;//引入ui命名空间 10 11 public class ZhuanChan : MonoBehaviour { 12 public GameObject goRawinage;//对象 13 public float FloColorChangeSpeed = 1F;//清晰度差值 14 15 private RawImage _RawImage;//组件 16 private bool _BoolQingXi; 17 private bool _BoolBuQingXi; 18 19 private void Awake() 20 { 21 //得到rawimage组件 22 _RawImage = goRawinage.GetComponent<RawImage>(); 23 24 } 25 /// <summary> 26 /// 屏幕变清晰 27 /// </summary> 28 private void ToQingXi() { 29 _RawImage.color = Color.Lerp(_RawImage.color,Color.clear, FloColorChangeSpeed * Time.deltaTime); 30 } 31 32 /// <summary> 33 /// 屏幕变不清晰 34 /// </summary> 35 private void ToNoQingXi() 36 { 37 _RawImage.color = Color.Lerp(_RawImage.color,Color.black, FloColorChangeSpeed * Time.deltaTime); 38 } 39 /// <summary> 40 /// 设置场景的淡入 41 /// </summary> 42 public void SetToQingXi() { 43 _BoolQingXi = true; 44 _BoolBuQingXi = false; 45 } 46 47 /// <summary> 48 /// 屏幕淡入,实现业务逻辑 49 /// </summary> 50 private void SetScenesToClear() { 51 ToQingXi(); 52 if (_RawImage.color.a<=0.05) 53 { 54 _RawImage.color = Color.clear; 55 _RawImage.enabled = false; 56 _BoolQingXi = false; 57 } 58 } 59 60 /// <summary> 61 /// 设置场景的淡出 62 /// </summary> 63 public void SetToBuQingXi() 64 { 65 _BoolQingXi = false; 66 _BoolBuQingXi = true; 67 } 68 /// <summary> 69 /// 屏幕淡出,实现业务逻辑 70 /// </summary> 71 private void SetScenesToBlack() 72 { 73 _RawImage.enabled = true; 74 ToNoQingXi(); 75 if (_RawImage.color.a >= 0.95) 76 { 77 _RawImage.color = Color.black; 78 79 _BoolQingXi = false; 80 _BoolBuQingXi = true; 81 } 82 } 83 84 85 86 87 // Use this for initialization 88 void Start () { 89 SetToQingXi(); 90 } 91 92 // Update is called once per frame 93 void Update () { 94 if (_BoolQingXi) 95 { 96 //屏幕淡入 97 SetScenesToClear(); 98 99 } 100 else if (_BoolBuQingXi) 101 { 102 //屏幕淡出 103 SetScenesToBlack(); 104 } 105 106 107 } 108 }
方便其他脚本调用。
标签:Unity3D,淡入淡出,color,void,private,RawImage,Color,屏幕 来源: https://www.cnblogs.com/JianhuaZhang/p/16598548.html