版权声明:

  • 本文原创发布于博客园"优梦创客"的博客空间(网址: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. Javascript判斷function是否定義

    jQuery可以用 isFunction() 來進行判斷 如果僅使用Javascript可以使用以下的方法 function isFunction(fn){ return typeof fn === ...

  2. 浅谈PageRank

    浅谈PageRank 2017-04-25 18:00:09 guoziqing506 阅读数 17873更多https://blog.csdn.net/guoziqing506/article/de ...

  3. windos server2012安装.net core 2.2问题

    服务器是:WinServer 2012 Standard  X64 版本 服务器是:WinServer 2012 DataCenter R2 X64 版本.几个老站点本身正常.如题:.Net Core ...

  4. odoo连接外部数据库

    odoo框架默认的访问时Postgres数据库,但在实际的应用场景中,不可避免的使用到其他数据库,所以有必要研究如何连接其他第三方数据库,这里分享下OCA的相关模块,具体的源代码在这里. 我将第三方的 ...

  5. Emiya 家今天的饭

    \(dp_{i,j,k}\)表示前\(i\)种烹饪方法,假设最多的是食材\(j\),食材\(j\)比其他食材多\(k\)次出现 其中\(i \in [1,n],j \in [1,m],k \in [- ...

  6. c++中共享内存原理及实现

    共享内存 (也叫内存映射文件) 主要是通过映射机制实现的 , Windows 下进程的地址空间在逻辑上是相互隔离的 , 但在物理上却是重叠的 ; 所谓的重叠是指同一块内存区域可能被多个进程同时使用 , ...

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

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

  8. 宝塔linux定时任务设置

    选择shell脚本选择执行周期在脚本内容内写入 curl -sS --connect-timeout 10 -m 60 '此处为地址链接';如下图所示:  

  9. python3:使用for循环打印九九乘法表

    for i in range(1, 10): for j in range(1, i + 1): print(j, '*', i, '=', i * j, end=" ") #en ...

  10. IDEA设置虚拟机参数

    第一步:打开“Run->Edit Configurations”菜单 第二步:选择“VM Options”选项,输入你要设置的VM参数 第三步:点击“OK”.“Apply”后设置完成