版权声明:
- 本文原创发布于博客园"优梦创客"的博客空间(网址:
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:
///
/// 数据模型,每个模型必须有一个名称
///
public abstract class ModelBase {
public abstract string Name { get; }
// 背包数据有背包模型,副本数据有副本模型,这是他们的名字
}