该博客仅作为学习记录来用
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++;
}
}
}