PJ/Assets/scripts/dotfs_scripts/UI_WindowBase.cs

45 lines
No EOL
1.7 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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