ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity3D屏幕淡入淡出效果

2022-08-18 14:35:10  阅读:185  来源: 互联网

标签:Unity3D 淡入淡出 color void private RawImage Color 屏幕


要求:

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有