以下是一个简单的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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录