在unity的player角色控制中实现MVC模式

原创 2015年11月18日 08:32:44

开始的话

  最近在做的一个小型RPG项目时遇到的问题是,UI的MVC比较好实现,但是主角player和敌人Enemy这些游戏角色写的代码比较分散。因为一下几点,对这个项目的player重构。
  1、游戏开发中要做某种程度的分离代码逻辑,可以提高代码的可维护性和重用性。
  2、不同的组件共享同一套逻辑代码。

理论实现

   一开始做法是,把角色动画和角色方向、角色移动这些各成一个类,分别是AnimationtController、dirController、moveController,每个control的动作作为一个类,一个类只做一件事。有什么方法可以在角色中也实现MVC呢。


游戏中的角色实现MVC结构
  (1) Character Manager 包含这个角色的controller(s)
  (2) Controller 利用Model来处理角色在这个游戏中某一个状态的逻辑,一个Controller可有几个Model
  (3) Model 负责特定一个功能,可以重复使用
如图所示:


  Manager类和Model类继承monoBehavior,直接拖拽到主角身上,在Inspector面板上调节参数。Character Manager类负责管理全部controller,每个controller都有一个或几个model。




  举个例子:一个状态机有几个状态State,也就是对应了几个controller,一个State可以包含几个model,比如moveState就可以包含moveModel和commonModel,moveModel专门负责角色的移动,idleModel则负责主角的表现,比如动画、旋转、位置等等,idleModel也可看作为CommonModel,因为基本每个controller都要包含idleModel。
如图所示:



Manager类有一个字典dictionary专门储存用户输入和游戏里面的信息,供characterManager使用,让他决定是否需要更换状态(即更换controller),例如在角色控制时按左键,向左行动的信息会写在dictionary中,通过FSM的转换机制,从idleState转换成moveState。这样,往左的信息可以是从InputManager那里得来,也可以从AI Manager那里得来,我们的目标也就实现了,以后有类似的角色时,可以供用这套框架,只要把Model写好就可以拼进去这个框架里面。
如图所示:
 

结束(还没结束)
  到现在为止,我们的目标已经实现了,这个框架也已经搭建好了,但是这只是在理论上实现而已,接下来会专门写一篇代码实现的文章来实现这个框架。







Unity 角色控制相关操作

首先打开unity游戏引擎编辑器,然后在Project视图中右键选择Import Package -> Charactr Controller(角色控制器)把它导入我们的工程中。如下图所示,第一人称与...
  • jbjwpzyl3611421
  • jbjwpzyl3611421
  • 2013年08月30日 14:04
  • 3397

Unity3D用MVC框架思想实现的小例子

模型Model脚本(GameModel)using UnityEngine; using System.Collections; using System.Collections.Generic; /...
  • frank901
  • frank901
  • 2017年06月02日 20:02
  • 1835

Unity3d中UI开发的MVC模式

原文:http://engineering.socialpoint.es/MVC-pattern-unity3d-ui.html 动机         和游戏开发的其他模块类似,UI一般需要通过多次迭...
  • jjiss318
  • jjiss318
  • 2015年03月12日 13:58
  • 21906

unity3d MVC设计模式

 动机         和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK。另外至关重要的是, 我们想尽快加速迭代的过程。使用MVC模式来进行设计,已经被业界证明了是...
  • qq_27361571
  • qq_27361571
  • 2016年03月02日 14:22
  • 737

Unity3d之MVC框架的使用

在Unity游戏的开发当中,我并没有刻意地采用MVC框架,因为不像网站开发那样,Model,View,Controller在游戏这个领域里还没有很清晰的定义。 究其原因,可能是由于不同游戏类型本身的软...
  • qq563129582
  • qq563129582
  • 2016年12月18日 17:06
  • 4590

简单实例-在Unity中使用MVC框架

  • 2017年07月20日 00:00
  • 14KB
  • 下载

Unity_角色控制详解

Unity_角色控制详解 1、CharacterController 角色控制器 最简单最常用的的方式。 using UnityEngine; using System.Coll...
  • husheng0
  • husheng0
  • 2015年08月18日 01:37
  • 1386

untiy 2D角色控制器

这节讲讲类似马里奥,盗贼遗产,这些类似的游戏人物基本的控制方式。这里我用Prime31这个公司的插件改了一个比较小的控制脚本,博客结尾会给大家一份源码,先简单的讲一下2D人物控制器的原理,2D控制器可...
  • u012565990
  • u012565990
  • 2016年07月04日 23:40
  • 2219

Unity MVC框架示例

  • 2014年11月25日 14:10
  • 3.68MB
  • 下载

Unity MVC

StrangeIoC 是一个超轻量级和高度可扩展的控制反转(IoC)框架,专门为C#和Unity编写。 项目地址:https://github.com/strangeioc/strangeioc...
  • ykr168age
  • ykr168age
  • 2016年03月15日 22:13
  • 403
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在unity的player角色控制中实现MVC模式
举报原因:
原因补充:

(最多只允许输入30个字)