MIF_E31222569/Assets/ToothyV/GUIPackCartoon/Demo/Scripts/Fader.cs

63 lines
1.7 KiB
C#

// Copyright (C) 2015 ricimi - All rights reserved.
// This code can only be used under the standard Unity Asset Store End User License Agreement.
// A Copy of the Asset Store EULA is available at http://unity3d.com/company/legal/as_terms.
using System.Collections;
using UnityEngine;
namespace Ricimi
{
// Utility class for smoothly fading a UI CanvasGroup.
public class Fader : MonoBehaviour
{
public float duration = 0.5f;
private CanvasGroup m_canvasGroup;
private void Awake()
{
m_canvasGroup = GetComponent<CanvasGroup>();
}
public void FadeIn()
{
StartCoroutine(RunFadeIn());
}
public void FadeOut()
{
StartCoroutine(RunFadeOut());
}
private IEnumerator RunFadeIn()
{
var time = 0.0f;
var initialAlpha = m_canvasGroup.alpha;
while (time < duration)
{
time += Time.deltaTime;
m_canvasGroup.alpha = Mathf.Lerp(initialAlpha, 1.0f, time / duration);
yield return new WaitForEndOfFrame();
}
m_canvasGroup.interactable = true;
m_canvasGroup.blocksRaycasts = true;
}
private IEnumerator RunFadeOut()
{
var time = 0.0f;
var initialAlpha = m_canvasGroup.alpha;
while (time < duration)
{
time += Time.deltaTime;
m_canvasGroup.alpha = Mathf.Lerp(initialAlpha, 0.0f, time / duration);
yield return new WaitForEndOfFrame();
}
m_canvasGroup.interactable = false;
m_canvasGroup.blocksRaycasts = false;
}
}
}