add project files
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace OHM.UnityToolkit.UI
|
||||
{
|
||||
public class UIMenusController : MonoBehaviour
|
||||
{
|
||||
public UIMenuBase defaultMenu;
|
||||
|
||||
private List<UIMenuBase> _popupStack = new List<UIMenuBase>();
|
||||
public UIMenuBase[] AllSubMenus { get; set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
InitSubMenus();
|
||||
if (defaultMenu != null)
|
||||
{
|
||||
HideAllExcept(defaultMenu);
|
||||
}
|
||||
else
|
||||
{
|
||||
HideAll();
|
||||
}
|
||||
}
|
||||
|
||||
private void InitSubMenus()
|
||||
{
|
||||
AllSubMenus = GetComponentsInChildren<UIMenuBase>(true);
|
||||
for (int i = 0; i < AllSubMenus.Length; i++)
|
||||
{
|
||||
InitSubMenu(AllSubMenus[i]);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void InitSubMenu(UIMenuBase menu)
|
||||
{
|
||||
menu.SetMenuController(this);
|
||||
}
|
||||
|
||||
public void HideAll()
|
||||
{
|
||||
for (int i = 0; i < AllSubMenus.Length; i++)
|
||||
{
|
||||
AllSubMenus[i].Hide();
|
||||
}
|
||||
}
|
||||
|
||||
public void HideAllExcept(UIMenuBase except)
|
||||
{
|
||||
for (int i = 0; i < AllSubMenus.Length; i++)
|
||||
{
|
||||
UIMenuBase menu = AllSubMenus[i];
|
||||
if (menu != except)
|
||||
{
|
||||
menu.Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowDebug(bool state)
|
||||
{
|
||||
}
|
||||
|
||||
public void PushPopup(UIMenuBase popup)
|
||||
{
|
||||
_popupStack.Add(popup);
|
||||
}
|
||||
|
||||
public void PopPopup(UIMenuBase popup)
|
||||
{
|
||||
_popupStack.RemoveAll((UIMenuBase p) => p == popup);
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
if (!Input.GetKeyUp(KeyCode.Escape))
|
||||
{
|
||||
return;
|
||||
}
|
||||
var stack = new List<UIMenuBase>(_popupStack);
|
||||
for (int i = stack.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (stack[i].OnBack())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user