PanelMgr-----罗培羽
来源:互联网 发布:淘宝假学生证怎么办理 编辑:程序博客网 时间:2024/06/05 23:57
using UnityEngine;using System.Collections;using System.Collections.Generic;using System;public class PanelMgr : MonoBehaviour { //单利 public static PanelMgr _instance; //场景中的Canvas private GameObject canvas; //存放已经打开的UI面板 public Dictionary<string, PanelBase> panelDic; //存放各层级对应的父物体 private Dictionary<PanelLayer, Transform> layerDic; void Awake() { _instance = this; InitLayer(); panelDic = new Dictionary<string, PanelBase>(); } //初始化层 private void InitLayer() { canvas = GameObject.Find("Canvas"); if (canvas == null) return; layerDic = new Dictionary<PanelLayer, Transform>(); foreach (PanelLayer p1 in Enum.GetValues(typeof(PanelLayer))) { string name = p1.ToString(); Transform t = canvas.transform.Find(name); layerDic.Add(p1, t); } } //打开面板 public void OpenPanel<T>(string skinPath,params object[] args) where T:PanelBase { string name = typeof(T).ToString(); if (panelDic.ContainsKey(name)) return; //面板脚本 PanelBase panel = canvas.AddComponent<T>(); panel.Init(args); panelDic.Add(name, panel); //加载皮肤 skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load<GameObject>(skinPath); if (skin == null) return; panel.skin = (GameObject)Instantiate(skin); //坐标 Transform skinTrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layerDic[layer]; skinTrans.SetParent(parent, false); //panel生命周期 panel.OnShowing(); panel.OnShowed(); } //关闭面板 public void ClosePanel(string name) { PanelBase panel = (PanelBase)panelDic[name]; if (panel == null) return; panel.OnShowing(); panelDic.Remove(name); panel.OnClosed(); GameObject.Destroy(panel.skin); Component.Destroy(panel); }}public enum PanelLayer{ //面板 Panel, //提示信息 Tips}
0 0
- PanelMgr-----罗培羽
- 8.Unity3D商业游戏源码研究-变身吧主公-PanelMgr
- UI面板Root-----罗培羽
- UI面板的基类PanelBase-----罗培羽
- UI框架之Panel实体类-----罗培羽
- 罗培羽—教你用VB制作RPG游戏
- Servlet零散知识点总结
- 小书匠语法使用手册
- mysql慢查询(一)
- android内核编译
- 欢迎使用CSDN-markdown编辑器
- PanelMgr-----罗培羽
- Scala详解---------快速入门Scala
- Activity入门指南
- 结构体嵌套
- MySQL 5.7.17 ZIP安装教程及解决方案
- MySQL运算符
- 多线程_Java程序运行原理和JVM的启动是多线程的吗
- endnote使用笔记
- 腾讯2017暑期实习生编程题-C-有趣的数字