Unity UGUI UI框架示例:单例模式管理面板加载与隐藏
以下是一个简单的Unity UGUI的UI框架示例,使用单例模式管理UI面板的加载和隐藏:
using UnityEngine;
using UnityEngine.UI;
public class UIManager : MonoBehaviour
{
// 单例模式
private static UIManager instance;
public static UIManager Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<UIManager>();
if (instance == null)
{
GameObject uiManager = new GameObject('UIManager');
instance = uiManager.AddComponent<UIManager>();
}
}
return instance;
}
}
// 用于存储UI面板的字典
private Dictionary<string, GameObject> uiPanels;
// 初始化方法
private void Awake()
{
uiPanels = new Dictionary<string, GameObject>();
}
// 加载UI面板的方法
public void LoadUIPanel(string panelName)
{
// 判断UI面板是否已经加载
if (uiPanels.ContainsKey(panelName))
{
// 如果已经加载,则直接显示
uiPanels[panelName].SetActive(true);
}
else
{
// 如果未加载,则加载并添加到字典中
GameObject panelPrefab = Resources.Load<GameObject>('UIPanels/' + panelName);
if (panelPrefab != null)
{
GameObject panelInstance = Instantiate(panelPrefab);
panelInstance.transform.SetParent(transform, false);
uiPanels.Add(panelName, panelInstance);
}
else
{
Debug.LogError('UI Panel not found: ' + panelName);
}
}
}
// 隐藏UI面板的方法
public void HideUIPanel(string panelName)
{
// 判断UI面板是否已经加载
if (uiPanels.ContainsKey(panelName))
{
// 隐藏UI面板
uiPanels[panelName].SetActive(false);
}
else
{
Debug.LogError('UI Panel not found: ' + panelName);
}
}
}
使用示例:
// 显示UI面板
UIManager.Instance.LoadUIPanel('MainMenuPanel');
// 隐藏UI面板
UIManager.Instance.HideUIPanel('MainMenuPanel');
在上述示例中,UIManager类为一个单例类,负责管理UI面板的加载和隐藏。可以通过调用LoadUIPanel方法加载UI面板,通过调用HideUIPanel方法隐藏UI面板。UI面板的预制体应该放在Resources/UIPanels目录下,并按照面板名称命名。
请注意,这只是一个简单的示例,你可以根据自己的需求进行扩展和修改。
原文地址: https://www.cveoy.top/t/topic/o7jj 著作权归作者所有。请勿转载和采集!