您的位置:首页 > 移动开发 > Unity3D

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

2015-11-18 08:32 435 查看

开始的话

最近在做的一个小型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 负责特定一个功能,可以重复使用
[align=left]如图所示:[/align]



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

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



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



[align=left] [/align]

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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: