60 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|
|
} |