今天说一下这个Jtro的技术分享:MVC框架

MVC框架历史悠久了,具体多久我也不知道,但是在游戏开发中的UI 使用太普遍了,最近我的一个徒弟跟我抱怨说网上的mvc框架晦涩难懂,看了一下午看不出所以然来,我比较难过,一方面是现在的年轻人都比较懒了,区区一下午看不懂框架就抱怨了,一方面是堂堂Unity帝国的大牛们写不出一个简单易懂的框架??所以我为大家准备这篇文章。已经是最简单的模式了。希望帮到一些徘徊在mvc门外的人。
好了,先来看看什么是mvc框架,代码之间是如何通讯的。

mvc框架图,来自百度百科

这里讲的很详细,请务必看懂这图。

然后打开UNITY ,我的版本是2017.2.0.f3.
新建UI画布,新建一个txt文本框,一个按钮,建立好如图:

文本框和按钮

再新建一个空物体,命名为controller。新建3个脚本,分别命名为:Modle、View、Controller。
 首先打开Modle输入以下代码:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 //声明委托
 public delegate void OnAddNum (int num);
 public class Modle {
 //声明修改的数字
 private int number;
 //声明委托对象
 public OnAddNum OnNumChange;
 //单例
 private static Modle mod ;
 public static Modle SigleMod ()
 {
 if (mod  == null){
 mod = new Modle ();
 }
 return mod;
 }
 //单例结束
 //数字属性
 public int Number {
 get {
 return number;
 }
 set {
 number = value;
 if (OnNumChange != null)
 {
 OnNumChange (number);
 }
 }
 }
 }

然后打开Controller脚本输入以下代码:

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
public class Contrller : MonoBehaviour {
 public static Contrller controller;
 private int Dlengt = 5;
 void Awake ()
 {
 controller = this;
 }
 // Use this for initialization
 void Start () {
 Modle.SigleMod ().Number = 0;
 }
 //按钮的点击事件
 public void OnBtn ()
 {
 Modle.SigleMod ().Number += Dlengt;
 }
 }

接着打开View输入以下代码:

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine .UI ;
 public class View : MonoBehaviour {
 public Text NumText;
 public Button BTN;
 // Use this for initialization
 void Start () {
 Modle .SigleMod ().OnNumChange += SetNumber;
 BTN.onClick.AddListener (Contrller.controller.OnBtn);
 }
 public void SetNumber (int num)
 {
 NumText.text = num.ToString ();
 }
 }

然后保存退出Mono

然后点击Controller,将View和Controller脚本挂载在上面。再将text组件和button组件分别挂载在NumText和BTN上。
OK,做完以上的步骤,运行一下,点击按钮text中的数就会+5.

正文完