revival/game/Assets/Scripts/UI/MainMenuUI.cs

76 lines
1.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MainMenuUI : MonoBehaviour
{
[Header( "Timing" )]
[SerializeField]
private float _fadeTime;
[Header("References")]
[SerializeField]
private SceneLoader _loader;
[SerializeField]
private CanvasGroup _navigation;
private CanvasGroup _current;
private void Awake()
{
ShowMenu( _navigation );
}
public void StartGame()
{
_loader.LoadScene( SceneType.Gameplay );
}
public void ShowMenu(CanvasGroup newMenu)
{
if ( newMenu == _current )
return;
StartCoroutine( FadeMenu( _current, newMenu ) );
_current = newMenu;
}
private IEnumerator FadeMenu( CanvasGroup from, CanvasGroup to )
{
float a = 1.0f;
if ( from != null )
{
from.interactable = false;
while ( a > 0.0f )
{
from.alpha = a;
a -= Time.unscaledDeltaTime / _fadeTime;
yield return null;
}
from.gameObject.SetActive(false);
from.interactable = true;
from.alpha = 1.0f;
}
to.gameObject.SetActive(true);
to.alpha = 0.0f;
to.interactable = false;
a = 0;
while ( a < 1.0f )
{
to.alpha = a;
a += Time.unscaledDeltaTime / _fadeTime;
yield return null;
}
to.alpha = 1.0f;
to.interactable = true;
}
}