Files

60 lines
2.2 KiB
C#

using UnityEngine;
public class UINavigation : MonoBehaviour
{
[Header("Родитель панелей (например, HUD_Canvas или PanelsContainer)")]
[SerializeField] private Transform panelsRoot;
// Публичные методы для кнопок (вешаем в OnClick)
public void OpenHome() => ShowPanel("Panel_Home");
public void OpenHero() => ShowPanel("Panel_Hero");
public void OpenArena() => ShowPanel("Panel_Arena");
public void OpenBattle() => ShowPanel("Panel_Battle");
public void OpenTroops() => ShowPanel("Panel_Troops");
public void OpenShop() => ShowPanel("Panel_Shop");
public void OpenMail() => ShowPanel("Panel_Mail");
public void OpenMissions() => ShowPanel("Panel_Missions");
public void OpenProfile() => ShowPanel("Panel_Profile");
public void OpenReward() => ShowPanel("Panel_Reward");
public void OpenEvents() => ShowPanel("Panel_Events");
private void ShowPanel(string panelName)
{
GameObject target = null; // Объявляем переменную ОДИН раз в начале метода
// Вариант 1: Если задан родитель, ищем только внутри него
if (panelsRoot != null)
{
Transform found = panelsRoot.Find(panelName);
if (found != null)
target = found.gameObject;
}
// Вариант 2: Если родителя нет, ищем по всей сцене
else
{
target = GameObject.Find(panelName);
}
// Если панель найдена — показываем её
if (target != null)
{
HideAllPanels();
target.SetActive(true);
Debug.Log("Открыта панель: " + panelName);
}
else
{
Debug.LogError("Не удалось найти панель с именем: " + panelName + ". Проверь название!");
}
}
private void HideAllPanels()
{
if (panelsRoot == null) return;
foreach (Transform child in panelsRoot)
{
child.gameObject.SetActive(false);
}
}
}