Unity简单的MVC
来源:互联网 发布:国家大数据专业委员会 编辑:程序博客网 时间:2024/06/03 23:06
Unity中游戏对象的目录结构
第一个类:PlayerData
此类是游戏角色的相关信息,写这个类主要是为了减少Player和PlayerModel中的重复代码
using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 这是有关玩家的信息/// 为了减小Player和PlayerModel中的代码的重复/// </summary>public class PlayerData{ //名字 private string _name; //等级 private int _lv; //经验值 private int _exp; public string Name { get { return _name; } set { _name = value; } } public int Lv { get { return _lv; } set { _lv = value; } } public int Exp { get { return _exp; } set { _exp = value; } }}
第二个类:Player
角色控制类,这里是角色控制信息,比如移动,跳跃
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Player:MonoBehaviour{ private PlayerData _playerData; public PlayerData PlayerData { get { return _playerData; } set { _playerData = value; } } public Player() { PlayerData data = new PlayerData(); data.Lv = 0; data.Name = "张三"; data.Exp = 0; PlayerData = data; }}
第三个类:PlayerView
UGUI界面的相关信息展示:
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class PlayerView{ private Button _gradeButton; private Text _lvText; private Text _expText; public PlayerView() { _gradeButton = GameObject.Find("Canvas/PlayerInfoPanel/GradeButton").GetComponent<Button>(); _gradeButton.onClick.AddListener(OnGradeButtonClick); _lvText = GameObject.Find("Canvas/PlayerInfoPanel/LVText").GetComponent<Text>(); _expText = GameObject.Find("Canvas/PlayerInfoPanel/EXPText").GetComponent<Text>(); } /// <summary> /// 更新数据的方法 /// </summary> /// <param name="model">需要更新的数据信息模型</param> public void UpdateAll(PlayerModel model) { _lvText.text = "LV:"+ model.PlayerData.Lv.ToString(); _expText.text = "EXP:" + model.PlayerData.Exp.ToString(); } //增加经验值 void OnGradeButtonClick() { PlayerController.Instace.CaculateInfo(); }}
第四个类:PlayerModel
游戏数据通知更新
using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 模型委托(当用户信息发生变化时执行)/// </summary>public delegate void OnValueChangeHanler(PlayerModel model);public class PlayerModel { public event OnValueChangeHanler OnChangValue; private PlayerData _playerData; public PlayerData PlayerData { get { return _playerData; } set { _playerData = value; } } public void UpdateData() { if (PlayerData.Exp / 500 > PlayerData.Lv) { PlayerData.Lv = PlayerData.Exp / 500; PlayerData.Exp = 0; } if (OnChangValue != null) { OnChangValue(this); } }}
第五个类:PlayerController
实现Model和View之间的沟通
using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// Model和View之间没有任何的关系/// 数据的更新通知都是Controller完成的/// </summary>public class PlayerController:MonoBehaviour{ private PlayerModel _playerModel; private PlayerView _playerView; public static PlayerController Instace; void Awake() { Instace = this; } public PlayerModel PlayerModel { get { return _playerModel; } set { _playerModel = value; } } public PlayerView PlayerView { get { return _playerView; } set { _playerView = value; } } void Start() { //初始化两个实例 PlayerModel = new PlayerModel(); PlayerView = new PlayerView(); //注册事件 PlayerModel.OnChangValue += PlayerView.UpdateAll; } //通过计算得到Model public PlayerModel CaculateInfo() { PlayerModel model = GetPalyerInfo(); //对数据计算 model.PlayerData.Exp += 100; //更新数据 model.UpdateData(); return model; } public PlayerModel GetPalyerInfo() { //模拟从网络请求数据,在这里我们直接使用的是游戏对象本身的信息 Player player = GameObject.Find("Player").GetComponent<Player>(); PlayerModel.PlayerData = player.PlayerData; return PlayerModel; } void OnDestroy() { //移除注册的事件 PlayerModel.OnChangValue -= PlayerView.UpdateAll; }}
效果如下
阅读全文
1 0
- Unity简单的MVC
- Asp.net MVC+unity简单架构
- Unity下的MVC编程
- Unity MVC
- 简单的MVC模式
- MVC的简单理解
- mvc简单的下载
- mvc的简单认识
- mvc简单的认识
- MVC的简单介绍
- 关于Unity游戏开发的MVC架构
- Unity 服务器的简单例子
- Unity 一段简单的AI
- unity之简单的对话框
- unity->C#简单的继承
- Unity 简单的音效管理器
- Unity简单的移动控制。
- unity 一个简单的有限状态机
- web--前端之js代码5
- vue.js中关于下拉框的值默认及绑定问题
- dex2oat的原理及慢的原因
- NAT技术基本原理与应用
- Elasticsearch基础教程
- Unity简单的MVC
- sql 取重复数据的第一条记录
- IIS发布网页
- 如何区分数据和指令
- 商业智能可视化决策平台
- Android数据库大批量数据插入优化
- 用java实现计算器功能
- 周志华 《机器学习》学习笔记系列一(绪论第一章+第二章)
- Paths(树上的贪心)