在unity的player角色控制中实现MVC模式
来源:互联网 发布:2016淘宝新店如何运营 编辑:程序博客网 时间:2024/05/23 23:00
开始的话
最近在做的一个小型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写好就可以拼进去这个框架里面。
如图所示:
结束(还没结束)
到现在为止,我们的目标已经实现了,这个框架也已经搭建好了,但是这只是在理论上实现而已,接下来会专门写一篇代码实现的文章来实现这个框架。
2 0
- 在unity的player角色控制中实现MVC模式
- Unity Player角色移动控制脚本实现
- unity中简单的角色移动控制
- Unity实现第三人称角色控制
- 在mvc设计模式中事物的实现(应用ThreadLocal)
- 基于角色的权限控制在Drupal7中的实现
- 【unity实用技能】unity在游戏中更换角色的shader,比如加个流光
- 【Unity】基于MVC模式的背包系统 UGUI实现
- 【Unity】基于MVC模式的双肩包系统 UGUI实现
- Unity中实现在切换场景时控制音乐的同步播放
- Unity3D Player角色移动控制脚本
- Unity3D Player角色移动控制脚本
- 在ASP.NET MVC中实现基于URL的权限控制
- Unity 角色控制相关操作
- Unity 角色控制相关操作
- Unity 鼠标控制角色移动
- unity 通过键盘控制角色的移动和旋转
- Delphi中MVC模式的实现
- 选择排序
- hadoop_cluser
- 伪逆矩阵
- 查询词提示系统的简单实现
- 最小生成树Prim
- 在unity的player角色控制中实现MVC模式
- Spring与Hibernate整合小细节与测试问题
- python获取操作系统平台、版本及架构
- 关于PowerBuilder启动时出现磁盘符号的解决办法
- CentOS 7 / RHEL 7 systemd 指令
- Click软件路由器实验
- Map遍历方法
- url 编码(percentcode 百分号编码)
- android Interpolator