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