基本类和思路
UIManager: 使用单例模式,有一个Dictionary<string,GameObject>存储具体UI预制体的引用,两个
Stack<>分别存储当前显示的UI和被关闭的UI(以便再次打开)。同时可以做到逻辑清晰的UI叠加显示。
同时有打开UI,关闭UI,清空栈的方法(切换场景前使用)。
using System.Collections.Generic;
using UnityEngine;
public class UIManager : MonoBehaviour
{
//存储UIPanel引用
private Dictionary<string, GameObject> panelGroup;
//显示的UI面板
private Stack<GameObject> currentPanel;
//被关闭的UI
private Stack<GameObject> hidePanel;
private UIManager()
{
panelGroup = new Dictionary<string, GameObject>();
hidePanel = new Stack<GameObject>();
currentPanel = new Stack<GameObject>();
}
private static readonly UIManager _instance = new UIManager();
//private static readonly object padlock = new object();
public static UIManager Instance
{
get
{
//第一次没有读取的情况
if (_instance.panelGroup.Count == 0)
{
_instance.ReadJsonInfo();
}
return _instance;
}
set {
}
}
public void OpenUI(string name