using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; /// /// Экран завершения первого уровня при успешном вводе кода лифта. /// public class LevelSuccessUI : MonoBehaviour { private static LevelSuccessUI _instance; public static LevelSuccessUI Instance { get { if (_instance == null) { _instance = Object.FindAnyObjectByType(FindObjectsInactive.Include); } return _instance; } } [Header("Корневая панель")] [SerializeField] private GameObject successPanelRoot; public bool IsOpen => successPanelRoot != null && successPanelRoot.activeInHierarchy; [Header("Кнопки")] [SerializeField] private Button nextLevelButton; [SerializeField] private Button mainMenuButton; private void Awake() { _instance = this; if (successPanelRoot == null) successPanelRoot = gameObject; if (nextLevelButton != null) { nextLevelButton.onClick.RemoveAllListeners(); nextLevelButton.onClick.AddListener(OnNextLevelClicked); } if (mainMenuButton != null) { mainMenuButton.onClick.RemoveAllListeners(); mainMenuButton.onClick.AddListener(OnMainMenuClicked); } } public void ShowSuccessScreen() { if (!gameObject.activeSelf) gameObject.SetActive(true); if (successPanelRoot != null) successPanelRoot.SetActive(true); Time.timeScale = 1f; Cursor.lockState = CursorLockMode.None; Cursor.visible = true; GameAudioSynthesizer.PlaySuccessChime(); StopAllCoroutines(); StartCoroutine(RoutineAutoTransition()); } private System.Collections.IEnumerator RoutineAutoTransition() { yield return new WaitForSecondsRealtime(2.0f); OnNextLevelClicked(); } public void OnNextLevelClicked() { Time.timeScale = 1f; SceneManager.LoadScene("Level2"); } public void OnMainMenuClicked() { Time.timeScale = 1f; SceneManager.LoadScene("MainMenu"); } }