专栏首页Unity TechnologyJtro的技术分享:MVC框架

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.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jtro的技术分享:游戏模式之命令模式

    命令模式 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以...

    LittleU
  • Jtro的技术分享:Unity读取excel表格文件生成asset配置表文件

    项目开源地址:https://github.com/641273917/unity_Excel-asset- 许多时候,我们需要通过excel表格来生成我们要...

    LittleU
  • Jtro的技术分享:Unity解析json文件(分为json与jsonArray)

    JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度,

    LittleU
  • AssetBundle打包工具实现

    雷潮
  • 【asp.net core 系列】- 11 Service层的实现样板

    在《asp.net core 系列》之实战系列中,我们在之前的篇幅中对项目有了一个大概的认知,也搭建了一个基础的项目骨架。那么就让我们继续完善这个骨架,让它更加...

    程序员小高
  • Java I/O 模型的演进

    什么是同步?什么是异步?阻塞和非阻塞又有什么区别?本文先从 Unix 的 I/O 模型讲起,介绍了5种常见的 I/O 模型。而后再引出 Java 的 I/O 模...

    九州暮云
  • java之门面模式详解

    本文先给个例子让你看懂了这个设计模式的概念,再分析这个这设计模式的优点,最后再具体的去看看实现方式。 1.一个例子来让你理解门面设计模式概念 最直观的需求是...

    如来
  • [笔记]Executors框架

    2.SingleThreadPool: 满足保证顺序的执行每个任务,并且在任意时间点,不会有多个线程是活动的场景

    干货满满张哈希
  • Spring Boot Async异步执行任务

    异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑。

    猿天地
  • 自己写一个DropDownList控件

    静心物语313

扫码关注云+社区

领取腾讯云代金券