/** * * * Title: * 公共层:场景的淡入淡出 * description: * [描述] * * Date: * * version: * * modify Recoder: * * **/ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class FadeInAndOut : MonoBehaviour { public static FadeInAndOut Instance;//本类实例 public GameObject goRawImage;//RawImage对象 public float FloColorChangeSpeed = 1f; private RawImage _RawImage;//RawImage组件 private bool _BoolScenesToClear = true;//屏幕逐渐清晰 private bool _BoolScenesToBlack = false;//屏幕逐渐模糊 private void Awake() { Instance = this; //如果goRawImage实例化出来了,就添加一个RawImage组件 if (goRawImage) { _RawImage = goRawImage.GetComponent(); } } //控制淡入 public void SetScenseToClear() { _BoolScenesToClear = true; _BoolScenesToBlack = false; } //控制淡出 public void SetScenseToBlack() { _BoolScenesToClear = false; _BoolScenesToBlack = true; } //淡入 private void FadeToclear() { //运用Color的插值计算 _RawImage.color = Color.Lerp(_RawImage.color, Color.clear, FloColorChangeSpeed * Time.deltaTime); } private void FadeToBlack() { //运用Color的插值计算 _RawImage.color = Color.Lerp(_RawImage.color, Color.black, FloColorChangeSpeed * Time.deltaTime); } private void ScenesToClear() { FadeToclear(); if (_RawImage.color.a <= 0.05) { _RawImage.color = Color.clear; _RawImage.enabled = false; _BoolScenesToClear = false; } } private void ScenesToBlack() { _RawImage.enabled = true; FadeToBlack(); if (_RawImage.color.a >= 0.95) { _RawImage.color = Color.black; _BoolScenesToBlack = false; } } void Update() { if (_BoolScenesToClear) { //屏幕淡入 ScenesToClear(); } else if (_BoolScenesToBlack) { //屏幕淡出 ScenesToBlack(); } }//updata_end }