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

网站系统网站开发wordpress清理主题

网站系统网站开发,wordpress清理主题,山东省建设工程造价管理协会网站,西安seo关键词排名优化今天来介绍一下UIManager和UIPanel模块#xff0c;话不多说直接开始。 UIManager 功能介绍 UIManager是管理UIPanel的唯一模块#xff0c;UIManager的主要功能包括#xff1a; 提供打开、隐藏、关闭UIPanel的相关接口。负责UIPanel对象的创建以及初始化。负责储存UIPanel对…        今天来介绍一下UIManager和UIPanel模块话不多说直接开始。 UIManager 功能介绍 UIManager是管理UIPanel的唯一模块UIManager的主要功能包括 提供打开、隐藏、关闭UIPanel的相关接口。负责UIPanel对象的创建以及初始化。负责储存UIPanel对象实例。 UIManager提供了打开、隐藏、关闭UIPanel的泛型接口通过传入UIPanel的子类型就可以对其进行相应的操作。接口代码如下 /// summary打开UI/summary /// typeparam nameTUI类型/typeparam public void OpenUIT(Action pCallback null) where T : Component/// summary隐藏UI不销毁/summary /// typeparam nameTUI类型/typeparam public void HideUIT()/// summary关闭UI销毁/summary /// typeparam nameTUI类型/typeparam public void CloseUIT()UIManager内以键值对的方式存储UIPanel当调用OpenUI时会先判断是否存在该UIPanel如果没有则会加载创建并存储下来。示例代码如下 public class UIManager : ManagerBaseUIManager {private Dictionarystring, GameObject mUIDictionary new Dictionarystring, GameObject();/// summary打开UI/summary/// typeparam nameTUI类型/typeparampublic void OpenUIT(Action pCallback null) where T : Component{string uiName GetUINameT();GameObject uiGameObject null;if (!mUIDictionary.TryGetValue(uiName, out uiGameObject)){uiGameObject InstantiateUIT();if (uiGameObject null){ManagerCollection.LoadManager.LoadAssetAsync(uiName, (bool pIsSucceeded) {OpenUIT(pCallback);});}else{uiGameObject.SetActive(true);pCallback?.Invoke();}}else{uiGameObject.SetActive(true);pCallback?.Invoke();}}/// summary实例化UI/summary/// param nameuiName面板名称/param/// param namegameObjectAsset资源/param/// returns面板对象/returnsprivate GameObject InstantiateUIT() where T : Component{GameObject uiGameObject null;string uiName GetUINameT();GameObject gameObjectAsset ManagerCollection.ResourceManager.GetGameObject(uiName);if (gameObjectAsset ! null){uiGameObject GameObject.Instantiate(gameObjectAsset);IPanelBase panelBase uiGameObject.AddComponentT() as IPanelBase;panelBase.Init();uiGameObject.transform.SetParent(mCanvasDictionary[panelBase.CanvasType], false);uiGameObject.transform.localScale Vector3.one;uiGameObject.transform.localRotation Quaternion.identity;mUIDictionary.Add(uiName, uiGameObject);}return uiGameObject;} }设计思路 先说一下UIManager为什么采用泛型接口的设计而不是通过string作为参数来传递UIPanel的名称。这么做的主要原因是为了正确的获取面板名称。泛型接口通过传递的UIPanel类型来获取名称这样做的好处在于在代码编译阶段就可以利用编译器如VSVSCode检测判断类型是否正确并且可以通过UIPanel类型正确的获取UIPanel的名称。而采用string作为参数传递UIPanel名称则需要在运行时才能判断UIPanel名称是否正确。所泛型接口能更好的确保代码的正确性。 再说一下InstantiateUI方法中为什么用AddComponent的方式添加UIPanel脚本。原因在于游戏框架被分为Client、Server、Desgin、Resource多个工程前端和美术在各自的工程项目中开发流程是美术在Resource工程中制作Prefab资源制作完成后由程序同步到Client工程中开发脚本逻辑。由于美术在Resource工程中并不会涉及到脚本文件为了避免不必要的同步所以在运行时创建UIPanel实例时绑定脚本。 UIPanel模块 功能介绍 UIPanel借鉴了MVC的设计模式UIPanel分为PanelBase、ControllerBase、ViewBase三个部分在创建一个新UIPanel时需分别创建三个子类并继承上面各自的基类。示例代码如下 /// summaryUI面板类/summary public class UIPanel : PanelBaseUIPanelController, UIPanelView {protected override void OnInit(){} }/// summaryUI面板Controller类/summary public class UIPanelController : ControllerBaseUIPanelView {protected override void OnInit(){} }/// summaryUI面板View类/summary public class UIPanelView : ViewBaseUIController {protected override void OnInit(){} } Panel部分的主要功能有 Panel作为面板的主类Panel类名作为面板的名称。在UIManager调用泛型接口时传入Panel类型如上面代码的UIPanel。负责Controller和View的创建初始化。 Controller部分的主要功能和主要职责有 Controller主要负责面板的逻辑部分代码处理UI响应、事件响应。ControllerBase提供了相关UI组件事件响应的接口。 示例代码如下 protected void RegisterButton(string pGameObjectName, ExButton.EnumCallbackType pCallbackType, Action pCallback)protected void RegisterSlider(string pGameObjectName, ExSlider.EnumCallbackType pCallbackType, Actionfloat pCallback)protected void RegisterToggle(string pGameObjectName, ExToggle.EnumCallbackType pCallbackType, Actionbool pCallback) View部分的主要功能和职责有 View主要负责面板显示部分的代码。View储存持有代码中需要用到UI对象。View提供获取UI对象和组件的相关接口。 示例代码如下 public class ViewBaseC : UIBase, IViewBasewhere C : IControllerBase {private C mControllerBase;[SerializeField]private ListGameObject mGameObjectList new ListGameObject();public GameObject GetGameObject(string pGameObjectName)public T GetComponentT(string pGameObjectName) } 设计思路 UIPanel借鉴了MVC的设计模式将UI面板中逻辑处理和界面显示两大部分的代码分开让代码更加的清晰从而便于开发与维护。虽然Controller和View可以相互的访问但在实际开发中还是遵从Controller驱动View的思路来开发。UIPanel先在Controller处理UI响应、事件响应相关逻辑完成后在View设置相关显示。 相关文档链接 工程源代码https://gitee.com/huoyixian/release-framework-client
http://www.hkea.cn/news/14472087/

相关文章:

  • wordpress博客建站教程进入公众号闪退怎么回事
  • 免费微网站有哪些wordpress购物商城代码
  • 做外贸面料哪个网站可以接单中国互联网百强企业名单
  • WordPress做的网站源代码东莞专业网站设计建站
  • 网站转化分析设计网站的制作框架
  • 门户网站作用大连市房屋管理局官方网站
  • 怎么选择邯郸做网站网站建设费计入什么科目
  • 网站建设对接模版湖南土特产销售网网站建设制作
  • 武隆网站建设联系电话彩票网站开发解决方案
  • 做视频资源网站有没有知道网址的
  • 济南seo整站外包北京又不让出京了
  • 30岁转行做网站编辑学院网站设计案例
  • 开了360网站卫士ssl如何做301wordpress性能差
  • 如何加强网站建设广州市建设职业培训学校网站
  • 网站制作 南通深圳互动网站建设
  • 网站建设 慕课wordpress 文章版本
  • 荣耀华为手机商城官方网站一个网站做几个关键词
  • 网站建设一般好久到期北京市网上服务平台
  • 官方网站搭建专门做酒的网站
  • 谷歌网站开发语言wordpress破解版
  • 科技信息网站建设的背景wordpress html标签
  • 长沙公积金网站怎么做异动怎么提高网站关键词排名
  • 网站建设合同建设方注意事项wordpress+简书模板
  • 创意网站建设话术wordpress 菜单
  • php网站搭建环境网站编辑怎么样
  • 南京做网站老铁外链工具
  • 网站建设策划 流程图网站如何改造wap
  • 物业网站模板芜湖seo外包公司
  • 五莲网站建设报价网站建站公司公告
  • 网站建设怎么让网站收录wordpress 充值系统