using UnityEngine; using UnityEngine.UI; // Базовый класс для всех окон в игре public abstract class UI_WindowBase : MonoBehaviour { [Header("Base Window Settings")] [SerializeField] protected GameObject windowPanel; // Главная панель окна [SerializeField] protected Button closeButton; // Общая кнопка "Назад/Закрыть" [SerializeField] protected GameObject[] objectsToHideOnOpen; // Что скрыть при открытии (например, HUD) protected virtual void Awake() { // Оставляем назначение кнопки закрытия if (closeButton != null) { closeButton.onClick.AddListener(CloseWindow); } // СТРОКУ НИЖЕ ЗАКОММЕНТИРУЙ (она и хлопает окно в ноль при первом запуске) // if (windowPanel != null) windowPanel.SetActive(false); } // Виртуальный метод открытия — дочерние классы могут его дополнять (override) public virtual void OpenWindow() { if (windowPanel != null) windowPanel.SetActive(true); ToggleExternalObjects(false); } public virtual void CloseWindow() { if (windowPanel != null) windowPanel.SetActive(false); ToggleExternalObjects(true); } // Метод для скрытия/показа объектов заднего фона (например, списка писем) protected void ToggleExternalObjects(bool state) { foreach (var obj in objectsToHideOnOpen) { if (obj != null) obj.SetActive(state); } } }