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);
        }
  • 相关阅读:
    互联网协议入门(一)(转)
    程序员的自我修养——操作系统篇(转)
    程序员的自我修养(2)——计算机网络(转)
    里氏替换原则
    Windows Phone 自学笔记 : ApplicationBar
    如何写好代码
    C# 通过操作注册表控制系统 (更新)
    优秀PPT 设计的十大秘诀
    设计模式学习--面向对象的5条设计原则
    SOLID (面向对象设计) From 维基百科
  • 原文地址:https://www.cnblogs.com/IAMTOM/p/9354588.html
Copyright © 2011-2022 走看看