zoukankan      html  css  js  c++  java
  • 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; } 
    // 背包数据有背包模型,副本数据有副本模型,这是他们的名字
    }
    
  • 相关阅读:
    模板
    kuangbin带你飞
    BZOJ开荒记
    模板
    洛谷
    模板
    [蓝桥杯][2013年第四届真题]危险系数
    数位DP入门题
    备战2019蓝桥杯
    常用的数学符号
  • 原文地址:https://www.cnblogs.com/raymondking123/p/11355911.html
Copyright © 2011-2022 走看看