一、创建一个面板作为遮罩面板,然后指定大小
接着创建一个控制该面板的脚本(将这个脚本FadeInAndOut添加给该面板)
/***
* Title:"智慧工厂" 项目
* 主题:全局层:面板物体的淡入淡出
* Description:
* 功能:
* 1、实现面板的淡入淡出功能
* Date:2017
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Global
{
public class FadeInAndOut : MonoBehaviour
{
public float colorChangeSpeed = 3F; //面板透明颜色变化的速度
private Image _ChangeImage; //需要改变透明度的组件
private bool _PanelFadeIn = true; //淡入标识
private bool _PanelFadeOut = false; //淡出标识
private void Start()
{
//获取到Image组件
_ChangeImage = this.gameObject.GetComponent<Image>();
}
private void Update()
{
if (_PanelFadeIn == true)
{
//面板淡入(隐藏)
PanelFadeIn();
}
else if (_PanelFadeOut == true)
{
//场景淡出(显示)
PanelFadeOut();
}
}
/// <summary>
/// 面板淡入(隐藏)
/// </summary>
public void SetPanelFadeIn()
{
_PanelFadeIn = true;
_PanelFadeOut = false;
}
/// <summary>
/// 面板淡出(显示)
/// </summary>
public void SetPanelFadeOut()
{
_PanelFadeIn = false;
_PanelFadeOut = true;
}
/// <summary>
/// 面板的淡入(隐藏)
/// </summary>
private void PanelFadeIn()
{
//面板组件透明
FadeToClear();
if (_ChangeImage.color.a <= 0.05F)
{
_ChangeImage.color = Color.clear;
_ChangeImage.enabled = false;
_PanelFadeIn = false;
}
}
/// <summary>
/// 面板的淡出(显示)
/// </summary>
private void PanelFadeOut()
{
_ChangeImage.enabled = true;
//面板组件清晰
FadeToBlack();
if (_ChangeImage.color.a >= 0.95F)
{
_ChangeImage.color = Color.black;
_ChangeImage.enabled = true;
_PanelFadeOut = false;
}
}
/// <summary>
/// 面板逐渐透明
/// </summary>
private void FadeToClear()
{
_ChangeImage.color = Color.Lerp(_ChangeImage.color,Color.clear,colorChangeSpeed*Time.deltaTime);
}
/// <summary>
/// 面板逐渐清晰
/// </summary>
private void FadeToBlack()
{
_ChangeImage.color = Color.Lerp(_ChangeImage.color, Color.black, colorChangeSpeed * Time.deltaTime);
}
}//class_end
}
2、使用方法