103 lines
2.2 KiB
C#
103 lines
2.2 KiB
C#
/**
|
||
*
|
||
*
|
||
* 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<RawImage>();
|
||
}
|
||
}
|
||
//控制淡入
|
||
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
|
||
}
|