淘宝网站是谁做的,wordpress历史版本号,公共资源交易中心官网官网,手机网站建设价钱是多少文章目录 前言MVC基本概念示例流程图效果预览后话 前言
在Unity中#xff0c;MVC#xff08;Model-View-Controller#xff09;框架是一种架构模式#xff0c;用于分离游戏的逻辑、数据和用户界面。MVC模式可以帮助开发者更好地管理代码结构#xff0c;提高代码的可维护性… 文章目录 前言MVC基本概念示例流程图效果预览后话 前言
在Unity中MVCModel-View-Controller框架是一种架构模式用于分离游戏的逻辑、数据和用户界面。MVC模式可以帮助开发者更好地管理代码结构提高代码的可维护性和可扩展性。
MVC基本概念
Model模型
职责管理应用程序的数据逻辑和业务规则。它独立于视图和控制器不直接处理用户输入。示例游戏中的角色属性如生命值、得分、配置文件、数据持久化。
View视图
职责负责用户界面的呈现和显示数据。它从模型获取数据并显示给用户。示例UI面板、按钮、文本框、动画展示。
Controller控制器
职责处理用户输入并将其转换为模型和视图的操作。它连接模型和视图并控制它们之间的交互。示例响应按钮点击、处理输入事件、调用模型的更新方法。 示例
先搭建个UI PlayerModel.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;public class PlayerModel
{private int level;public int Level{get { return level; }}private int money;public int Money{get { return money; }}// 单例模式确保数据唯一性private static PlayerModel instance;public static PlayerModel Instance{get{if (instance null){instance new PlayerModel();// 创建实例初始化instance.Init();}return instance;}}private event UnityActionPlayerModel updateEvent;public void Init(){// 初始化数据一般在这里读取表配置啥的level 1;money 100;}public void LevelUp(){level;SaveInfo();}public void AddMoney(int num){money num;SaveInfo();}public void SaveInfo(){// 保存数据并更新Debug.Log(SaveInfo);UpdateInfo();}public void UpdateInfo(){// 更新数据的时候给Controller发通知updateEvent?.Invoke(this);}public void AddUpdateEvent(UnityActionPlayerModel action){updateEvent action;}public void RemoveUpdateEvent(UnityActionPlayerModel action){updateEvent - action;}
}
PlayerView.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class PlayerView : MonoBehaviour
{// 先绑定UIpublic Text levelText;public Text moneyText;public void UpdateView(PlayerModel playerModel){// View 负责显示数据不负责逻辑levelText.text playerModel.Level.ToString();moneyText.text playerModel.Money.ToString();}
}
PlayerController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class PlayerController : MonoBehaviour
{// 绑定Viewpublic PlayerView playerView;// 绑定Buttonpublic Button moneyBtn;public Button levelBtn;private void Start(){// 把View的更新方法绑到Model的通知列表里PlayerModel.Instance.AddUpdateEvent(playerView.UpdateView);// 绑定Button的点击事件levelBtn.onClick.AddListener(PlayerModel.Instance.LevelUp);moneyBtn.onClick.AddListener(PlayerModel.Instance.AddMoney);}
}
绑定组件 流程图 效果预览 后话
通过这种分离模式我们将数据处理、用户交互和显示逻辑分离开来使得代码更易于管理和维护。后期可以根据需要扩展这些基本类例如增加更多的 UI 元素或更复杂的交互逻辑。
enjoy it ~