PJ/Assets/scripts/dotfs_scripts/UI_WindowBase.cs

45 lines
1.7 KiB
C#
Raw Normal View History

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);
}
}
}