using DG.Tweening; using System; using UnityEngine; public class MenuGameplayTransit : MonoBehaviour { [SerializeField] MenuLayoutController menu; [SerializeField] GameplayLayoutController gameplay; public event Action GameplayOpened; Sequence _sequence; bool locked = false; private void Update() { if (locked) return; if (Input.GetKeyDown(KeyCode.Alpha1)) GotoGameplay(); else if (Input.GetKeyDown(KeyCode.Alpha2)) GotoMenu(); } public void GotoGameplay() { Lock(); if (_sequence != null) { _sequence.Kill(); _sequence = null; } _sequence = DOTween.Sequence(); _sequence.Append(menu.GetCloseSequence()); _sequence.Append(gameplay.GetOpenSequence()); _sequence.onComplete += Unlock; _sequence.onComplete += NotifyGameplayOpened; _sequence.PlayForward(); } private void NotifyGameplayOpened() { GameplayOpened?.Invoke(); } public void GotoMenu() { Lock(); if (_sequence != null) { _sequence.Kill(); _sequence = null; } _sequence = DOTween.Sequence(); _sequence.Append(gameplay.GetCloseSequence()); _sequence.Append(menu.GetOpenSequence()); _sequence.onComplete += Unlock; _sequence.PlayForward(); } private void Lock() => locked = true; private void Unlock() => locked = false; }