版权声明:

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

Unity进阶之:MVC编程思想的更多相关文章

  1. javaWeb中MVC的编程思想示例

    没有学习MVC之前我只写了一个Servlet类(Note_List.java),分层之后,我将这个类分成了5个类(NoteDao.java,,NoteDaoImpl.java,,NoteService ...

  2. MVC三层架构模式编程思想 JSP-Servlet-JavaBean

    MVC(Mdodel-View-Controller)编程模式.把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. watermark/2/tex ...

  3. Unity 背包系统的完整实现(基于MVC框架思想)

    前言: 项目源码上传GitHub:Unity-knapsack 背包系统: 背包系统是游戏中非常重要的元素,几乎每一款游戏都有背包系统,我们使用背包系统可以完成装备栏的数据管理,商店物体的数据管理等等 ...

  4. U3D 飞机大战(MVC模式)解析--面向对象编程思想

    在自己研究U3D游戏的时候,看过一些人的简单的游戏开发视频,写的不错,只是个人是java web 开发的人,所以结合着MVC思想,对游戏开发进行了一番考虑. 如果能把游戏更加的思想化,分工化,开发便明 ...

  5. Unity进阶之ET网络游戏开发框架 01-下载、运行

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  6. 淡扯javascript编程思想

    一.面向对象-OOD   虽然js面向对象的编程思想已经老话常谈了,但了为了文章的完整性,我还是把它加了进来,尽量以不太一样的方式讲述(虽然也没什么卵不一样的). 1.面向对象,首先得有类的概念,没有 ...

  7. Java编程思想(11~17)

    [注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第十一章 持有对象 11.1 泛型和类型安全的容器>eg: List<St ...

  8. C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想

    如果你接触过<设计模式>.软件架构的编程思想,就会知道优秀的设计准则:“组合优于继承的”. 这句话很简短,但开始学习OOP的时候,真切的是—-不太好理解(以我个人当初学习为例). OOP的 ...

  9. Python进阶:函数式编程实例(附代码)

    Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...

随机推荐

  1. WeQuant教程—1.4 实践教学:比特币量化定投

     在wequant.io,为了让读者能直接体验量化系统的魅力,我们用前面的思路,实现了一套完整的量化系统和回测工具,这个系统非常简单,用户只需要把交易意志用策略表达出来,系统就可以自己完成交易效果的回 ...

  2. DNS与ARP协议

    DNS(domain name system) DNS的作用:将域名(如baidu.com)转换为IP地址 DNS的本质是:分层的DNS服务器实现的分布式数据库: 根DNS服务器 - com DNS服 ...

  3. 【计算机视觉基础】IPM

    IPM code #if 0 void xyp2ipmp(cv::Mat& xyp, cv::Mat& ipmp, cv::Mat& xylim, Size& sz){ ...

  4. 通过Fastdfs进行文件上传服务(文件和图片的统一处理)

    1.文件上传简单流程分析图: 2.Fastdfs介绍: Fastdfs由两个角色组成: Tracker(集群):调度(帮你找到有空闲的Storage) Storage(集群):文件存储(帮你保存文件或 ...

  5. c++11多线程记录4:死锁

    简单示例 举个例子,桌上有一支笔和一张纸,小A和小B都要拿到纸笔写字 小A拿了笔,小B拿了纸,这时就形成了死锁(两人都不愿意让出纸笔). 其实只要稍加控制就可以避免这种情况:规定必须先拿到纸再能去尝试 ...

  6. yum命令安装jdk

    1.查看是否已安装JDK,卸载 yum list installed |grep java java--openjdk.x86_64 :.b13.el7_5 @updates java--openjd ...

  7. 解决打开IE报错“无法启动...丢失api-ms-win-core-path-l1-1-0.dll”的问题

    打开IE突然发现报错 试了各种方法都不行 最终看这篇文章,才解决:https://www.yijile.com/log/577.html 打开IE设置选项,选择管理加载项,如图讲该选项禁用,就不报错. ...

  8. c#mysql数据库备份还原

    1:引用dll MySql.Data.dll,   MySqlbackup.dll 2:建一个数据连接静态类 public static class mysql { public static str ...

  9. 批量关联update

    UPDATE A SET A.field = B.field from table A inner join table B ON A.field = b.field

  10. 16 doc values 【正排索引】

    搜索的时候,要依靠倒排索引:排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values 在建立索引的时候,一方面会建立倒排索引, ...