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.
正文完