using UnityEngine;
using System.Collections;
public enum FadeDirection
{
In = -1, // Fade In
Out = 1 // Fade Out
}
//Затемнятор осветвлятор экрана
public class FadeTransition : MyMonoBehaviour
{
[Header("Затемнятор осветвлятор экрана")]
[SerializeField] public float m_FadeTime = 0.5f;
private int m_DrawDepth = -1000;
private Texture2D m_FadeOutTexture;
private FadeDirection m_FadeDirection = FadeDirection.In;
private float m_CurrentAlphaColor = 1.0f;
private float m_StartTime;
//-----------------------------------------------------------------------------------------
void Start()
{
m_FadeOutTexture = new Texture2D(2, 2);
for (var mip = 0; mip < 2; ++mip)
{
for (var cols = 0; cols < 2; ++cols)
{
m_FadeOutTexture.SetPixel(cols, mip, Color.black);
}
}
m_FadeOutTexture.Apply();
}
//-----------------------------------------------------------------------------------------
void OnGUI()
{
if (m_FadeDirection == FadeDirection.Out)
m_CurrentAlphaColor = Mathf.Lerp(0.0f, 1.0f, ((Time.time - m_StartTime) / m_FadeTime));
else
m_CurrentAlphaColor = Mathf.Lerp(1.0f, 0.0f, ((Time.time - m_StartTime) / m_FadeTime));
GUI.color = new Color(GUI.color.r, GUI.color.g, GUI.color.b, m_CurrentAlphaColor);
GUI.depth = m_DrawDepth;
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), m_FadeOutTexture);
}
//-----------------------------------------------------------------------------------------
public float BeginFade(FadeDirection fadeDirection)
{
m_StartTime = Time.time;
m_FadeDirection = fadeDirection;
return m_FadeTime;
}
//-----------------------------------------------------------------------------------------
public void FadeIn()
{
BeginFade(FadeDirection.In);
}
//-----------------------------------------------------------------------------------------
public void FadeOut()
{
BeginFade(FadeDirection.Out);
}
//-----------------------------------------------------------------------------------------
public void FadeInverse()
{
if(m_FadeDirection==FadeDirection.In)
{
BeginFade(FadeDirection.Out);
return;
}
if(m_FadeDirection==FadeDirection.Out)
{
BeginFade(FadeDirection.In);
return;
}
}
}