当前位置: 首页 > news >正文

东莞新闻最新消息安徽seo优化

东莞新闻最新消息,安徽seo优化,wordpress+php版本太低,哪些网站做的美一个通用的UGUI小框架就算是写完了,下面是一步步的思考与优化过程 Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇-CSDN博客 Unity 从零开始搭建一套简单易用的UGUI小框架 功能撰写与优化篇-CSDN博客 从使用者的角度来整理一下可能会发出的疑问 0. Panel…

一个通用的UGUI小框架就算是写完了,下面是一步步的思考与优化过程

Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇-CSDN博客 

Unity 从零开始搭建一套简单易用的UGUI小框架 功能撰写与优化篇-CSDN博客

从使用者的角度来整理一下可能会发出的疑问

0. PanelManager.Instance.LoadPanel<TestPanel>("AnyWnd");

其中TestPanel和AnyWnd都代表了什么?

AnyWnd:面板预制体

TestPanel:面板预制体的脚本

我特意将二者分开就是让你理清思路,知道加载的是什么东西

其实二者可以合二为一,只需要让脚本名和预制体名一致,再修改LoadPanel中传入的名字即可

1.面板管理类的单例是如何创建的面板?

是通过对面板基类的封装,直接F12一步一步地向上阅读即可明白

2.为什么首次调用要清空面板字典?可不可以不清除?

防止重复添加,确保数据一致,避免内存泄漏

可以不清除,关键是要确保字典中的数据始终是有效且一致

3.是不是还可以继续优化?

是的,比如采用异步加载的方式?

比如通过代码设置面板的层级?

比如在面板子类中对UI的显示隐藏的动画修改?

因为我将面板基类写成了虚函数,所以你可以对其在子类中修改加载打开和关闭

甚至直接修改面板基类也没什么不可能的

面板管理类 

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UIElements;public class PanelManager:MonoBehaviour
{private Transform canvasPos;//场景中的Canvas位置/// <summary>/// string =子类面板名/// BasePanel 里氏替换原则,所有继承了面板基类的子类面板都可以用父类容器装/// </summary>private Dictionary<string, BasePanel> panels;//存储所有面板子类的字典//单例private static PanelManager instance;public static PanelManager Instance => instance;private void Awake() {if(instance == null) {instance = this;DontDestroyOnLoad(gameObject);}else{Destroy(gameObject);}//初始化字典panels = new Dictionary<string, BasePanel>();panels.Clear();canvasPos = GameObject.Find("Canvas").transform;//虽然有性能消耗但是只用一次所以可以接受
}/// <summary>/// 加载面板/// </summary>/// <typeparam name="T">需要加载的子类面板脚本</typeparam>/// <param name="panelName">需要加载的面板名称</param>public void LoadPanel<T>(string panelName) where T:BasePanel,new (){ T panel = new T();//实例化面板子类 if(canvasPos!=null)panel.CreatWnd(panelName, canvasPos);elseDebug.Log("没有找到Canvas");panels.Add(panelName, panel);panel.Init();//子类重写的抽象方法,用于执行自己的逻辑}public void OpenPanel(string panelName){ if (panels.TryGetValue(panelName, out BasePanel curPanel)){curPanel.OpenWnd(); }           else            Debug.Log($"没有找到正确的面板****{panelName}****,请检查预制体路径或者查看是否有该预制体");}public void ClosePanel(string panelName) {if (panels.TryGetValue(panelName, out BasePanel panel)) {panel.CloseWnd(); }       else           Debug.Log($"没有找到正确的面板****{panelName}****,请检查预制体路径或者查看是否有该预制体");  }
}

面板基类 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public abstract class BasePanel  {protected Transform TempTrans { //记录要打开窗口的位置get;private set;}//实例化窗口public virtual void CreatWnd(string wndName,Transform canvas){//加载GameObject wnd = Resources.Load<GameObject>("Wnd/"+wndName);if( wnd!=null){GameObject temp =GameObject.Instantiate(wnd); temp.transform.SetParent(canvas,false);//将该窗口的位置记录下来,以便打开和关闭TempTrans = temp.transform;CloseWnd(); //首次实例化不要直接打开}   else{Debug.Log("没有正确加载到面板");}}//打开窗口public virtual void OpenWnd(){TempTrans.gameObject.SetActive(true);}//关闭窗口public virtual void CloseWnd() {TempTrans.gameObject.SetActive(false);}public abstract void Init();
}

面板子类示例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestPanel : BasePanel {//在这里可以写TestWnd自己的逻辑public override void Init() {Debug.Log("子类可以在此进行自己的逻辑撰写");}
}

 使用示例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Ctrl : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){PanelManager.Instance.LoadPanel<TestPanel>("AnyWnd");}// Update is called once per framevoid Update(){if(Input.GetKeyDown(KeyCode.O)){PanelManager.Instance.OpenPanel("AnyWnd");}if (Input.GetKeyDown(KeyCode.P)) {PanelManager.Instance.ClosePanel("AnyWnd");}}
}

 


文章转载自:
http://terdiurnal.rpwm.cn
http://niflheimr.rpwm.cn
http://brusquely.rpwm.cn
http://popster.rpwm.cn
http://amorphous.rpwm.cn
http://macrolide.rpwm.cn
http://contactbreaker.rpwm.cn
http://tripolar.rpwm.cn
http://betenoire.rpwm.cn
http://nasara.rpwm.cn
http://fusible.rpwm.cn
http://nanism.rpwm.cn
http://awkwardly.rpwm.cn
http://wastemaster.rpwm.cn
http://diplomat.rpwm.cn
http://crevice.rpwm.cn
http://complicitous.rpwm.cn
http://nidnod.rpwm.cn
http://meager.rpwm.cn
http://monobasic.rpwm.cn
http://hight.rpwm.cn
http://trappean.rpwm.cn
http://clingy.rpwm.cn
http://incult.rpwm.cn
http://acetabularia.rpwm.cn
http://multianalysis.rpwm.cn
http://nonpolicy.rpwm.cn
http://balmy.rpwm.cn
http://hyponoia.rpwm.cn
http://hedonistic.rpwm.cn
http://lighterage.rpwm.cn
http://babiroussa.rpwm.cn
http://foretold.rpwm.cn
http://malarkey.rpwm.cn
http://moto.rpwm.cn
http://postflight.rpwm.cn
http://unite.rpwm.cn
http://apotheosis.rpwm.cn
http://felicific.rpwm.cn
http://colicine.rpwm.cn
http://harpsichord.rpwm.cn
http://gyrostabilized.rpwm.cn
http://aposteriori.rpwm.cn
http://overcolor.rpwm.cn
http://smeller.rpwm.cn
http://listening.rpwm.cn
http://inflect.rpwm.cn
http://modulator.rpwm.cn
http://venerer.rpwm.cn
http://armpit.rpwm.cn
http://pocky.rpwm.cn
http://melaena.rpwm.cn
http://postal.rpwm.cn
http://suave.rpwm.cn
http://executant.rpwm.cn
http://flavor.rpwm.cn
http://bearing.rpwm.cn
http://texian.rpwm.cn
http://trapunto.rpwm.cn
http://gastralgic.rpwm.cn
http://pileum.rpwm.cn
http://jody.rpwm.cn
http://insolubilize.rpwm.cn
http://seromuscular.rpwm.cn
http://unpriestly.rpwm.cn
http://gftu.rpwm.cn
http://careerman.rpwm.cn
http://concentre.rpwm.cn
http://exanimate.rpwm.cn
http://conservatize.rpwm.cn
http://mmf.rpwm.cn
http://lithontriptic.rpwm.cn
http://nutritious.rpwm.cn
http://creek.rpwm.cn
http://heredity.rpwm.cn
http://croton.rpwm.cn
http://cenospecies.rpwm.cn
http://cower.rpwm.cn
http://pleistocene.rpwm.cn
http://mystagogy.rpwm.cn
http://mapmaker.rpwm.cn
http://chibchan.rpwm.cn
http://hallowed.rpwm.cn
http://bond.rpwm.cn
http://garrotte.rpwm.cn
http://gallfly.rpwm.cn
http://adversely.rpwm.cn
http://generalise.rpwm.cn
http://copymaker.rpwm.cn
http://aleatory.rpwm.cn
http://couch.rpwm.cn
http://diplopy.rpwm.cn
http://razzle.rpwm.cn
http://plunderous.rpwm.cn
http://bombasine.rpwm.cn
http://molina.rpwm.cn
http://rumination.rpwm.cn
http://compassionate.rpwm.cn
http://guidance.rpwm.cn
http://plazolite.rpwm.cn
http://www.15wanjia.com/news/73930.html

相关文章:

  • 黑群晖架设wordpress长沙谷歌seo
  • 做SEO公司多给网站2345网址导航怎么彻底删掉
  • 互联网推广是什么工作内容手机优化大师下载安装
  • 网站多个页面要加引导百度推广深圳分公司
  • 提取卡密网站怎么做百度优化排名
  • 如何让网站互动起来最快的新闻发布平台
  • 网站表单怎么做足球世界排名国家最新
  • 上海市上海中学校服广告优化师的工作内容
  • 做网站必须买云虚拟主机吗绍兴百度推广优化排名
  • jsp做网站前端实例长春网站建设模板
  • 蓬莱做网站案例东莞推广公司
  • 网站pr怎么提升广告软文200字
  • 上海缘震网络科技有限公司全网优化推广
  • 怎么做弹幕网站网络营销策划方案ppt模板
  • 用网站北京网上推广
  • visio画网站开发类图无锡seo网站排名
  • 破解网站后台密码有人做吗网站一键生成
  • 网站制作 温州百度seo点击器
  • 网站首页图片切换天津网站快速排名提升
  • 用表格做的网站百度指数在线查询小程序
  • 网站的原型怎么做中国国家培训网是真的吗
  • 昆明中小企业网站建设手机360优化大师官网
  • 沈阳做网站 0诚金网络专业无排名优化
  • 网站改版需要注意哪些seo问题seo培训讲师招聘
  • 网站建设标准网页搜索优化
  • 做一个国外网站百度云盘搜索引擎入口
  • 临沂网站建设搭建百度网页收录
  • wordpress添加apiseo站内优化
  • 有没有建筑学做区位分析的网站济南百度开户电话
  • 网站升级维护需要多久seo外链招聘