版权声明:
- 本文原创发布于博客园"优梦创客"的博客空间(网址:
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; } // 背包数据有背包模型,副本数据有副本模型,这是他们的名字 }