private IEnumerator Fade()
{
if (fadeStart != null)
{
fadeStart.Invoke();
}
yield return StartCoroutine(Fade(0.0f, 1.0f, FADE_TRANSITION_SECONDS, fadeMiddle));
yield return new WaitForSeconds(FADE_DELAY_SECONDS);
yield return StartCoroutine(Fade(1.0f, 0.0f, FADE_TRANSITION_SECONDS, fadeEnd));
Destroy(gameObject);
}