zoukankan      html  css  js  c++  java
  • unity简易ui框架

    在unity项目开发中,ui模块的开发往往占据了很大一部分工作,部分游戏甚至绝大部分的工作都是在ui上,如何高效管理各种界面,这里分享一套高效易用的UI框架。
    首先,我们定义一个PanelBase类,作为所有panel的父类,在这个类里,我们可以给panel定义一套生命周期

        //初始化
        public virtual void Init(){}
        //开始面板前
        public virtual void OnShowing() { }
        //显示面板后
        public virtual void OnShowed() { }
        //帧更新
        public virtual void Update() { }
        //关闭前
        public virtual void OnClosing() { }
        //关闭后
        public virtual void OnClosed() { }
    所有界面类需要继承PanelBase类,并重写这套生命周期函数,当然你不必每个界面都重写这生命周期中所有的函数,具体情况还得具体分析。这里以一个界面LoginPanel为例:
    public class LoginPanel : PanelBase
    {
        #region 生命周期
        //初始化
        public override void Init(s)
        {

          //dosomething 

        }
        public override void OnShowing()
        {
            base.OnShowing();
            loginBtn.onClick.AddListener(OnLoginClick);
            regBtn.onClick.AddListener(OnRegClick);
        }
        #endregion
    首先,在Init函数中初始化一些属性参数,OnShowing函数为界面打开时执行的函数,在LoginPanel中也会写一些本界面的逻辑处理。
    最后,需要定义一个PanelManager类,用来负责提供打开和关闭某界面的功能,当需要打开或者关闭某个界面时,调用该类中的open、close函数即可,这样做的好处自然不必多说:
     public void OpenPanel<T>(string skinPath, params object[] args) where T : PanelBase
        {
            //已经打开
            string name = typeof(T).ToString();
            if (dict.ContainsKey(name))
                return;
            //面板脚本
            PanelBase panel = canvas.AddComponent<T>();
            panel.Init(args);
            dict.Add(name, panel);
            panel.OnShowing();
            panel.OnShowed();
        }
        //关闭面板
        public void ClosePanel(string name)
        {
            PanelBase panel = (PanelBase)dict[name];
            if (panel == null)
                return;
            panel.OnClosing();
            dict.Remove(name);
            panel.OnClosed();
            GameObject.Destroy(panel.skin);
            Component.Destroy(panel);
        }
  • 相关阅读:
    Java字符串比较
    Java中定义不了可变长数组怎么办---集合 泛型
    Java后台读取excel表格返回至Web前端
    JAVA中Stringbuffer的append( )方法
    Java操作Excel中HSSFCell.CELL_TYPE_STRING、BOOLEAN、NUMERIC无定义解决方法
    数据结构---公交线路提示系统05(内附读取表格+迪杰斯特拉算法Java代码)
    .getCellType()的几种类型值
    数据结构---公交线路提示系统04
    数据结构---公交线路提示系统03
    转载一篇较为详细的caffe-ssd编译环境的搭建
  • 原文地址:https://www.cnblogs.com/IAMTOM/p/9354588.html
Copyright © 2011-2022 走看看