您的位置:首页 > 移动开发 > Unity3D

201710032355->使用静态方法记录窗体加载

2017-10-03 23:55 190 查看
根据之前窗体的四个基本生命周期

在静态方法中检测窗体是否加载与是否展示

若加载,则调用窗体的进入和刷新

若没有加载的话则调用窗体初始化以及进入和刷新

当然还有关闭窗体

关键点

1.每次打开窗体检测allpages是否已经打开过

2.需要展示的窗体都加入shownpages,压入堆栈

3.关闭窗体则需扫描shownpages,有则关闭,无则忽略

详细代码:

         public static void ShowPage<T>() where T : AppBasePages, new()

        {

            string name = typeof(T).Name;

            if (AllPages.IsNonNullOrEmpty() && AllPages.ContainsKey(name))

            {

                ShowPage(name, AllPages[name], null, null);

            }

            else

            {

                T t = new T();

                ShowPage(name, t, null, null);

            }

        }

        public static void ShowPage(string name, AppBasePages pages, object content, Action callback = null)

        {

            if (AllPages.IsNull()) { AllPages = new Dictionary<string, AppBasePages>(); }

            AppBasePages page = null;

            if (!AllPages.ContainsKey(name))

            {

                AllPages.Add(name, pages);

            }

            page = AllPages[name];

            page.Show();

        }

        public static void ClosePage(string name, AppBasePages pages, Action callback = null)

        {

            if (ShownPages.IsNonNullOrEmpty() && pages.IsNonNull() && pages.CacheGameObject.IsNonNull())

            {

                if (ShownPages.ContainsKey(pages.CacheGameObject.name))

                {

                    ShownPages[pages.CacheGameObject.name].Close();

                    ShownPages.Remove(pages.CacheGameObject.name);

                }

            }

        }

        public static void ClosePage<T>()

        {

            string name = typeof(T).Name;

            if (AllPages.ContainsKey(name))

            {

                ClosePage(name, AllPages[name], null);

            }

        }

        public static int UIDeep { get; set; }

        public static Dictionary<string, AppBasePages> AllPages { get; set; }

        public static Dictionary<string, AppBasePages> ShownPages { get; set; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息