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

洛阳做多屏合一网站即时设计网站

洛阳做多屏合一网站,即时设计网站,韩国电商网站,云南建筑培训网今天来介绍一下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/14394561/

相关文章:

  • 个人做网站租云服务器海口建站模板
  • 织梦后台搭建网站并调用标签建设网站建设公司讯息
  • 个人网站模板 php杭州网站忧化
  • 做网站都需要哪些软硬件石头科技 网站开发
  • 物流门户网站开发 报价阿亮seo技术
  • 网站页面设计如何快速定稿投资交易网站开发
  • 电子商务网站建设中应注意哪些问题如何搭建一个网站步骤
  • 网站开发流程及顺序加密系统
  • wordpress 新闻seo公司排名
  • 做纸巾定制的网站在线做海报网站
  • 广西网站建设培训wordpress 只能做博客
  • 宿迁定制网站建设网站建设junke100
  • 深圳品牌建网站网站建设窗口框架
  • 做自动发货网站百度文库个人登录
  • 接加工订单的网站设计素材网站图案免费
  • 广州网站建设网站制作公司protenus代做网站
  • 百度平台seo优化外链平台
  • 网站建设hyioi雁塔免费做网站
  • 哪个网站找住宿的便宜app联盟推广平台
  • 网站一跳率营业执照怎么申报年报
  • 如何选择网站域名红酒网站源码
  • h5商城网站模板下载陕西网站备案查询
  • 网站友情链接怎么设置百度竞价排名商业模式
  • 网站被备案能建设网店营销网站
  • 网站建设排版规定html网页设计实训报告范文
  • 北海做网站网站建设哪家好华艺网站建设
  • 杭州专门做网站百度竞价代运营
  • 沈阳建设网站宝塔怎么做两个网站
  • 张家口市建设局网站120平三室两厅简约装修
  • 浪潮云网站建设新浪做网站