//保存所有被创建出来的面板对象
static Dictionary<string, GameObject> loadGameObject = new Dictionary<string, GameObject>();
//显示面板
public static void ShowPop(string panelName,Action action=null)
{GameObject parent = GameObject.Find("UIManager");//面板父节点
//是否创建过对象
if (loadGameObject.ContainsKey(panelName))//判断面板是否被创建过
{
loadGameObject[panelName].SetActive(true);
return;
}
//没有创建,从Resoures中加载
GameObject prefab = Resources.Load<GameObject>("UI/Pop/" + panelName);
if (prefab != null)
{
GameObject go = GameObject.Instantiate<GameObject>(prefab);//克隆对象
go.name = panelName;//设置名字
go.layer = LayerMask.NameToLayer("UI");//设置层级
if (parent != null)
{
go.transform.SetParent(parent.transform, false);//设置父节点
go.transform.localScale = Vector3.one;
go.transform.localPosition = Vector3.zero;
loadGameObject.Add(panelName, go);//向字典添加
go.SetActive(true);
Debug.Log("ResourceCreatePanel::>> " + panelName + " " + prefab);
if (action != null) action();
}
else
{
Debug.Log("ShowPop的父节点为空");
}
}
else
{
Debug.Log("ShowPop的资源AB包不存在,Resource中也不存在");
}
}
//隐藏
public static void HidePop(string name)
{
if (loadGameObject.ContainsKey(name))
{
loadGameObject[name].SetActive(false);
}
else
{
Debug.Log("HidePop的字典中不包含这个对象,说明这个对象不是通过ShopPop创建的");
}
}
//删除
public static void HidePopDestroy(string name)
{
if (loadGameObject.ContainsKey(name))
{
GameObject go = loadGameObject[name];
loadGameObject.Remove(name);
GameObject.Destroy(go);
}
else
{
Debug.Log("HidePopDestroy的字典中不包含这个对象");
}
}