45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
|
|
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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|