Unity之基于MVC的UI框架-含案例
Unity之基于MVC的UI框架-含案例
使用案例:类《双人成行》3D动作益智冒险类双人控制游戏开发教程
资源地址:https://learn.u3d.cn/tutorial/3d-adventure-william-anna
一、MVC框架概览
本框架以MVC的方式搭建,以View视口的方式展现数据,以Controller处理应用逻辑,数据存储方面以Model存储数据模型。
1 " View "
也就是视图以UI视口的方式展现给用户,内容有view、Window、PopWindow、Toast(游戏中的吐丝效果)、TipDialog等等;
2 “Controller”
处理应用逻辑,对用户的输入进行响应,如点击按钮后的响应等等
3 “Model”
对应用中用到的业务模型
- 流程设计图
三、接口设计
【描述接口设计,在此详细说明,本章的接口是指引擎使用时的流程框架】
UIControllerManager
功能描述:界面管理类,对所有界面类型的组件进行控制(包括打开、切换、关闭等) 支持界面的静态加载、动态加载。界面的大部分操作都可以在这里调用。
- 方法名称: private void Init()
初始化所有的管理类,如View管理类,Window管理类,PopWindow管理类
- 方法名称: public void BaseRegisterView(System.Type type, string prefabPath)
通过view的类型type和它所有的prefabPath注册指定的view - 方法名称: public void BaseRegisterView(System.Type type, BaseViewController view)
通过view的类型type和它所有的view注册指定的引用view - 方法名称: public void BaseRegisterWindow(System.Type type, string prefabPath)
通过Window的类型type和它所有的prefabPath注册指定的Window - 方法名称: public void BaseRegisterWindow(System.Type type, BaseWindowController window)
通过Window的类型type和它所有的Window注册指定的引用window - 方法名称: public virtual void RegisterView()
注册所有已经储存的View - 方法名称: public virtual void RegisterWindow()
注册所有已经储存的Window - 方法名称: public void ChangeView(System.Type view, object param = null)
改变当前的激活的视口
- 方法名称: public BaseViewController GetCurrentView()
取得当前激活的视口 - 方法名称: public void CloseView()
关闭当前的视口 - 方法名称: public void ChangeWindow(System.Type window, object param = null, EChangeType type = EChangeType.ESWITCH)
改变当前激活的窗口 - 方法名称: public BaseWindowController GetCurrentWindow()
取得当前激活的窗口 - 方法名称: public void CloseWindow(System.Type window, params string[] param)
关闭当前的窗口
ViewControllerManager
同UIControllerManager
管理所有基于BaseViewController派生的View
WindowControllerManager
同UIControllerManager
管理所有基于BaseWindowController派生的Window
BaseViewController
View基类所有全屏界面归属于View,所有View的基类
1) public abstract void OnEnterStart(GameObject parent = null, object param = null);
当进入View以前的开始前调用
2) public virtual void OnEnterEnd()
当进入View以前的结束后调用
3) public abstract object OnExitStart()
4) public virtual void OnExitEnd()
5) public virtual void ChangeView(System.Type view, object param = null)
BaseWindowController
四、常用操作方法
派生自BaseWindowController的窗口类的注册和使用
两种方法
-
-
-
- 第一种方法
-
-
(1)首先新建你的Window类如“XXMainViewController”
(2)然后注册你的窗口类:
XXUIMainManager.Instance.BaseRegisterView(typeof(XXMainViewController), "Prefab/UI/View/XXMainViewController");
使用这种方法注册的类如XXMainViewController 将不能够出现在“Hierarchy”面版的对象“WindowControllerManager”下面
(3)然后就可以使用
“XXUIMainManager.Instance.ChangeView(typeof(xxMainViewController));”方法切换到这个Window。
-
-
-
- 第二种方法
-
-
(1)首先新建你的Window类如“XXLoginWindowController”
然后注册你的窗口类:
将“XXLoginWindowController”的prefab对象拖到“Yunji.WindowControllerManager”
对象下,并将对象处于隐藏状态;
(2)找到Canvas对象下的派生自“UIControllerManager”的组件如“XXUIMainManager”,在它的属性“Windows”下增加“Size”值的大小,并将前面的“prefab对象”拖拽引用到其中的一个“Element”中。
(3)然后就可以使用
“XXUIMainManager.Instance.ChangeView(typeof(XXMainViewController));”方法切换到这个Window。
派生自BaseWindowController的窗口类之间的切换
派生自BaseViewController的视口类、派生自BaseTipDialogController的提示窗口类、派生自BasePopWindowController的弹出窗口类的注册和使用类似上一节的操作。