您现在的位置是:首页 > 科技资讯科技资讯

puremvc(C语言的UI框架是干什么的)

编辑 2024-06-02 11:40:56 科技资讯

1. puremvc,C语言的UI框架是干什么的?

框架其实就是一种模块的分离,一种写代码的规则,所为的目的都是便于代码的管理修改,更有利于编码思维。

做游戏开发很重要的一点就是将UI和逻辑剥离出来,UI框架就很好地实现了UI和逻辑的分离以及各个模块的分离。市场上主要有两种StrangeIocMVC框架和PureMVC框架。

puremvc(C语言的UI框架是干什么的)

2. puremvc对于Unity来讲是否合适?

PureMVC和Unity3D的UGUI制作一个简单的员工管理系统实例运行实例演示.png

前言:

1.关于PureMVC:

MVC框架在很多项目当中拥有广泛的应用,很多时候做项目前人开坑开了一半就消失了,后人为了填补各种的坑就遭殃的不得了。嘛,程序猿大家都不喜欢像文案策划一样组织文字写东西,也不喜欢看别人留下不清不楚的文档,还不如看代码来得实在。刚开始新人看代码是看得头晕,因为这样那样的东西不一定能完全猜得透。而老人家就算有经验和阅历,也没有这么多的体力去看一个庞大而又复杂的糟糕项目。因为这种需求,Unity3D的程序猿就统一组织起来,想做一个完整规范的程序框架,而这时,PureMVC就诞生了。我个人喜欢PureMVC的原因也很简单,因为它简单粗暴,和Unity3D之间没有依赖性,加上又开源,真的遇到Bug能拿到源代码来调试也是很容易执行的。Unity3D应用商店还有一个同类产品叫uFrame Game Framework,它对Unity版本有着依赖,拖视图虽然方便,但是一旦出bug真的改得够呛的,所以不推荐使用它。下文便是使用PureMVC和Unity3D的UGUI制作一个简单的员工管理系统实例。

2.通过MVC模式在Unity项目当中应用的特别提醒:

(1)Unity3D是基于组件设计的,如果没有好的规划,组件之间会产生复杂的调用关系,导致组件之间复杂的依赖,从而破坏了整个系统结构,因此需要设计时确定组件的层次关系,确保依赖关系只存在于下层对上层。而这个是业务逻辑设计问题,PureMVC帮不了你。(2)仅仅用上MVC,解决不了什么问题,或许解决了1%,剩下的99%就被挪到了MVC的C里,当你庆祝MVC竣工时,99%的问题在那里默默的微笑的看着你。(话说以前写PHP的CI框架时候,一堆东西扔到XxxAction.Class.php里面,发现和摆的乱七八糟的架构没区别,只是大家都习惯了这套框架的规矩,看代码找某个东西稍微好找而已,本质上还是考验基本功和对项目的熟悉程度的,23333)

3.PureMVC通过4种pattern实现隔离变化:

(1)facade非常适合将UI界面对游戏数据的依赖解耦,将UI操作数据的请求封装在facade 接口里面,同时数据变化对UI的影响可以通过notification事件通知来实现,该模式应用得非常常见。(2)command模式统一对对象的操作,将键盘输入,网络输入输出统一成command来操控游戏对象。(3)proxy维护数据,提供某块数据统一的初始化,访问和修改接口。(4)mediator没怎么用过,我们的游戏中的UI界面每次变化一般都是整体更新的,不常用局部更新。以上4中pattern请务必牢牢记住,请务必牢牢记住,请务必牢牢记住。重要的事情要说3便。

4.PureMVC的流程示意图

(1)在puremvc中,model/view/controller统一是由Facade类的单件实例来统筹管理的。(2)PureMVC的基本流程:启动PureMVC—>建立Mediator来操作视觉元素(按钮与文本框)—>点击按钮发送Notification->文本框接收Notification改变内容。(3)大致流程可理解为:通过Facade类的单件实例(即:统一的门面) 启动 puremvc环境,启动同时注册Command对象(相当于asp.net mvc中的controller),然后Command通过与之关联的facade(即前面的单件实例)来注册Mediator(中介者:用于把View与Command联系起来)。(4)当UI界面(即View)上有动静时(比如按钮点击了之类),与之关联的Mediator(中介者)会发送通知给facade,然后facade会调用command对象执行相关的处理。(即:消息响应)

PureMVC示意图.png

一.引入PureMVC的插件

1.下载PureMVC

请访问地址https://github.com/PureMVC/puremvc-csharp-standard-framework/wiki

安装

2.把PureMVC.DotNET.35.dll放到Plugins里面就好了。

QA

3.这里有一个很简单的基本案例可以参考一下http://www.open-open.com/lib/view/open1452657515480.html

二.动手配置文件

1.需要完成的实例如下:实现的界面效果.png2.具体实现的目标:

(1)在Scripts文件夹下,分别设置模型、视图、控制器对应的文件夹Model、View、Controller,分别放置处理数据模型的脚本、处理显示视图的脚本、处理逻辑控制的脚本。(2)如界面,一个Unity3D和UGUI制作的简单员工管理系统,Employee Admin,其中员工界面Users显示有哪些员工在登记范围内,而New和Delete分别是添加和删除某个员工的信息。然后下面的员工信息界面User Profile则是对员工信息的一个具体编辑和修正。

三.主要实现步骤

1.启动文件AppFacade.cs 作为PureMVC框架的入口文件。2.对PureMVC需要处理的事件用EventsEnum.cs存放3.然后在Unity的场景中创建一个MainUI.cs文件,挂在需要启动PureMVC的组件上。就可以启动了。4.对Controller部分进行处理

然后我们对执行逻辑的处理事件进行补充。新建一个文件夹Controller,暂时先放置StartupCommand.cs和DeleteUserCommand.cs。处理上述所说的逻辑事件首先,处理启动事件

其次,处理删除用户事件

5.对Model部分进行处理

然后是对Model模型数据的定义哈,首先要记录的信息用UserVO来表示

接着对操作数据的UserProxy进行补充

6.接下来对VIew部分进行实现

显示用户界面列表的UserList和填写用户具体信息的UserForm列表单条数据部分

用户列表部分

用户个人信息部分

最后,对局部更新UI的行为进行完善Mediator

补充,UI的选择部分

//[lzh]using UnityEngine;using UnityEngine.UI;using UnityEngine.Events;using System.Collections;

public class ToggleEvent : UnityEvent<Toggle> { }

[RequireComponent(typeof(ToggleGroup))]public class UGUI_MyToggleGroup : MonoBehaviour{ public ToggleGroup toggleGroup; public ToggleEvent onToggleChange = new ToggleEvent();

}

作者:小小酥XX链接:http://www.jianshu.com/p/904b36ad37e2來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文标签:

很赞哦! ()

横幅广告