Слияние: наши панели HUD, стройка, казармы, камера + карта мира, чат и рейтинг от Саши
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// Один менеджер на все HUD-панели: открывает нужную, остальные закрывает.
|
||||
// Кладётся на HUD_Canvas (или создаётся автоматически через Tools -> Build HUD Panels).
|
||||
// Кнопки вызывают Open("Quests"), Open("Battle") и т.д. (id = имя панели).
|
||||
public class UIPanelManager : MonoBehaviour
|
||||
{
|
||||
public static UIPanelManager Instance { get; private set; }
|
||||
|
||||
[System.Serializable]
|
||||
public class PanelEntry
|
||||
{
|
||||
public string id; // "Quests", "Battle", "Settings"...
|
||||
public GameObject panel; // сама панель
|
||||
}
|
||||
|
||||
public List<PanelEntry> panels = new List<PanelEntry>();
|
||||
|
||||
private string currentId = "";
|
||||
|
||||
public string CurrentId { get { return currentId; } }
|
||||
|
||||
void Awake() { Instance = this; }
|
||||
|
||||
void Start() { CloseAll(); }
|
||||
|
||||
void OnDestroy() { if (Instance == this) Instance = null; }
|
||||
|
||||
// Открыть панель по id. Повторное нажатие на ту же кнопку -- закрывает.
|
||||
// Если панели с таким id нет (например "Home") -- просто закрываем всё: это и есть "главная".
|
||||
public void Open(string id)
|
||||
{
|
||||
bool toggleOff = (currentId == id);
|
||||
CloseAll();
|
||||
if (toggleOff) return;
|
||||
|
||||
foreach (var p in panels)
|
||||
{
|
||||
if (p.id == id && p.panel != null)
|
||||
{
|
||||
p.panel.SetActive(true);
|
||||
currentId = id;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void CloseAll()
|
||||
{
|
||||
foreach (var p in panels)
|
||||
if (p.panel != null) p.panel.SetActive(false);
|
||||
currentId = "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user