unity 对MVC设计模式的理解

1 篇文章 0 订阅

该博客仅作为学习记录来用

 

Model是用来处理数据的脚本,Model放在GameManager游戏物体上

这里定义一个事件,用来通知View里面的UI改变

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Model : MonoBehaviour {


    private new string name;
    private float experience;
    private float level;

    public event updateDataHandle UpDateDataEvent;

    
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
            UpDateDataEvent(name, experience, level);
        }

    }
    public float Experience
    {
        get
        {
            return experience;
        }
        set
        {
            experience = value;
            UpDateDataEvent(name,experience,level);
        }
    }
    public float Level
    {
        get
        {
            return level;
        }
        set
        {
            level = value;
            UpDateDataEvent(name,experience,level);
        }
    }

    
}
 

View是用来处理UI的脚本, ,View放在画布上

 

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public delegate void updateDataHandle(string s,float f,float level);
public class View : MonoBehaviour {

    public Text t1;
    public Text t2;
    public Text t3;
    private Button btn;

    void Start () {

       
        btn = transform.Find("Button").GetComponent<Button>();
        btn.onClick.AddListener(Controller.Instance.OnClickBtn);
    }

    public void ShowText(string s1,float f,float level)
    {
        t1.text = s1;
        t2.text = f.ToString();
        t3.text = level.ToString();
    }
}
 

Controller脚本是控制器脚本   Controller放在GameManager游戏物体上

控制器脚本里面有View对象与Model对象,且Controller是一个单例模式

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Controller : MonoBehaviour {

    public static Controller Instance;

    

    private Model mod;
    private View view;

    private void Awake()
    {
        Instance = this;
        mod = GetComponent<Model>();
        view = GameObject.Find("Canvas").GetComponent<View>();
    }

    void Start () {
        mod.UpDateDataEvent += view.ShowText ;
        ModelInit();
    }
    void ModelInit()
    {
        mod.Name = "lidongtao";
        mod.Experience = 0;
        mod.Level = 1;
    }

    public  void OnClickBtn()
    {

        mod.Experience += 30;
        if(mod.Experience > mod.Level*100)
        {
            mod.Experience -= 100 * mod.Level;
            mod.Level++;
        }
    }
}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值