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