简单的Unity UI框架(基于UGUI)

本文介绍了如何构建一个简单的Unity UI框架,利用单例模式的UIManager管理UI预制体,通过Dictionary和Stack存储和控制UI的显示与关闭。UIPanel作为UI组件的父类,提供初始化、重新打开和关闭的回调。UI面板的具体实现继承自UIPanel,可以自定义动画效果。此外,讨论了两种实现方式,包括使用Json文件存储UI信息和直接在Unity界面挂载UI预制体。最后提醒注意该框架可能不适用于复杂的UI交互,如背包系统,并未处理下层UI的点击响应问题。
摘要由CSDN通过智能技术生成

基本类和思路

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值