其他分享
首页 > 其他分享> > Unity3D屏幕淡入淡出效果

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