Unity进阶之:MVC编程思想

版权声明:

  • 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客"
  • 您可以自由转载,但必须加入完整的版权声明!

MVC

游戏初始化

在unity-start场景中,为了给整个游戏做初始化,需要创建一个空对象
空对象绑定一个脚本,这个脚本
MainInitialicer : MonoBehavior 继承自MonoBehavior
首先创建一个PlayerController Controller的对象
然后定义一个方法

void start()
{
     控制器初始化
     Controller = new PlayerController();
     调用显示视图界面方法
     Controller.ShowView
}

MVC实际操作

创建一个panel,panel下创建一个button设置名称为攻击,调整为best fit
Mainpanel下增加一个text控件输入EXP best fit
创建一个my文件夹,里面有Scenes script
Script里面有application应用程序 framework框架 文件夹
Framework里面写的是MVC的框架
需要有几个脚本:
modelbase模型层基类、
viewbase界面基类、
controllerbase控制层基类、
mvc外部类
通过facade类可以统一地访问到三个层的各个组件
MVC外部类,就是MVC的框架,对外操作简洁,内部类是看不到的
然后依次编写三个类的代码

controllerbase:

public abstract class ControllerBase
{
// 执行命令(一段功能代码)
	public abstract void Execute(object param); // 对谁攻击,用什么技能攻击,技能的id
// 执行一个功能
}
//public class AttackController : ControllerBase
//{
//	public override void Execute()
//	{
//		throw new System.NotImplementedException();
//	}
//}
//var ac = new AttackController();
//ac.Execute()

viewbase:

视图类:
1、每个从ViewBase继承的类都必须提供一个名字 每个视图都有自己的名字
2、每个从ViewBase继承的类都必须注册自己关心的事件 "AttackEvent" 比如对经验值增加感兴趣
3、每个从ViewBase继承的类都需要处理自己关心的事件 “attackevent”

public abstract class ViewBase : MonoBehaviour
{
	public IList interestedEvents; // 保存关心的事件列表
	public abstract string Name { get; }
// 每个view的名字,把取得name的方法交给子类做
// 属性的方法抽象就不用实现,不然get方法必须要实现,返回一个名字
// Get {return name;}
	public abstract IList GetInterestedEvents(); 
// 方法:返回一个我关心的事件
	public abstract void HandleEvents(string eventName, object eventParam);
// 处理自己关心的事件,关心的事件名(攻击),事件的信息(攻击造成的伤害值)
}

View 注册到MVC类,然后每当数据发生变化,通知界面更新时,会受到MVC类发过来的一个消息,就是所关心的事件

modelbase:

/// <summary>
/// 数据模型,每个模型必须有一个名称
/// </summary>
public abstract class ModelBase {
	public abstract string Name { get; } 
// 背包数据有背包模型,副本数据有副本模型,这是他们的名字
}
posted @ 2019-08-15 09:10  优梦创客  阅读(554)  评论(0编辑  收藏  举报