unity状态机

Unity教程之-Unity3d游戏剧情对话(二)

 

上篇文章《Unity教程之-Unity3d游戏剧情对话(一)》我们在CommandManager中直接写入一个个的指令,实际上这样是很不好的,因为一个游戏可能会出现很多的剧情动画,那么不就是要写n个类吗?而且修改起来也不是很好的。所以一个比较好的方法就是写一个Unity Editor编辑器类。

以下是本人写的一个Editor编辑器类,功能还不是很完善,例如可以加入”插入命令”,”从文本中读取命令”等等等的功能,不过,先将就用了,看下效果图

Unity Editor

More

Unity教程之-Unity3d游戏剧情对话(一)

 

本篇unity3d教程我们来学习下游戏剧情对话的实现,游戏中的剧情(非CG动画)主要有两种,一种是自动播放的,另一种是含有对话的。可以把剧情中的一个个动画(这里的动画不仅仅包含角色动画,还包含位移,旋转,时间等待等等)当成一种种状态(有点像状态机),放到一个链表或者队列中,每当一个状态完成时便跳到下一个状态,于是就会形成连环的剧情动画了。

要注意的是,在普通状态下,一个动作完成会跳到下一个动作,但是在对话状态下,一个动作完成时不会自动跳到下一个动作,而是每出现一个新的对话,就会触发动作。

在这里给出核心代码(一个动作基类Command以及一个管理动作的类CommandManager):

下面是Command类 More

再谈Unity控制逻辑一个轻量级的状态机

 

关于状态机这种设计模式不用多介绍了,特别是FSM。不了解的童鞋,请参考下面文章
Unity3d架构系列之-FSM有限状态机设计一
Unity3d架构系列之- FSM有限状态机设计二
Unity3d架构系列之- FSM有限状态机设计三
Unity3d架构系列之- FSM有限状态机设计四(总结篇)
现在是我实现一个轻量级的状态机,不废话了上代码先

More

Unity3d架构系列之- FSM有限状态机设计四(总结篇)

 

 

由于最近一直赶项目进度,没时间写,昨晚终于项目终于完成了,空闲下来,做一个总 结。在这一篇中主要是把前五章一起总结一下,以及通过举例演示如何使用?有限状态机在游戏中使用的地方非常多,比如我们界面之间的切换,角色的状态切换等 等。所以非常值得大家去学习一下,接下来我们主要实现的功能,为了表达清楚,我通过图例给大家说明一下:

wKiom1TcXfDAJ_Q0AAEVcBwHlNY828.jpg

More

Unity3d架构系列之- FSM有限状态机设计三

 

继续上篇文章在设计二中,我们把事件系统EventSystem实现一下。这个EventSystem类主要实现的是事件的注册,触发,以及分发Event消息的作用。提供接口对外使用的。在这里面为了功能扩展方便用了好多模板函数,方便大家调用。

分发消息的时候,我们采用的是队列的方式,就是先进先出原则。

首先要把消息事件注册一下,就是将其放到我们预先定义的表里面。函数代码如下所示:

More

Unity3d架构系列之- FSM有限状态机设计二

 

继续上篇文章在设计一中,我们实现了有限状态机管理类,接下来,我们实现FSState这个类,这里类主要是状态的基本操作以及事件触发。在这里我们定义了在FiniteStateMachine类里声明的三个委托。在FSState里面使用的代码如下:


protected FiniteStateMachine.EnterState mEnterDelegate;
protected FiniteStateMachine.PushState mPushDelegate;
protected FiniteStateMachine.PopState mPopDelegate;

这个FSState是独立的一个类,不继承Mono,我们定义了一个构造函数,将我们的委托进行了初始化:

More

Unity3d架构系列之-FSM有限状态机设计一

 

我们在游戏开发中经常面临架构设计问题,在这里我就将一些经常使用的游戏开发方面的知识跟大家介绍 一下, 一是给大家提供一个设计思路,在此基础上可以举一反三,二是大家可以通过这个平台共同学习。闲话不多说了,切入正题,FSM有限状态机,在unity3d开发中如何使用?那些模块的设计需要它?接下来我们就分析一下游戏:

比如我们的玩家自身的状态切换,Idle,walk,attack等等,这些都属于状态的切换,可以用有限状态机;还有比如玩家去完任务:领取任务,杀 怪,交易,交接任务;还有界面逻辑比如登录,进入场景,退出等等,在游戏中状态切换还是很多的,以上我说的都可以使用有限状态机。既然这么多地方可以使 用,那么我们如何去设计有限状态机?

下面我们先设计我们的FSM有限状态机类图,如下所示:

http://s3.51cto.com/wyfs02/M02/59/1E/wKiom1THrgnDFZcsAAOShIcUaH0197.jpg

More