Unity3D架构系列之- FSM有限状态机设计一
2015-09-01 14:50
441 查看
原文:http://www.manew.com/thread-37136-1-1.html
我们在游戏开发中经常面临架构设计问题,在蛮牛问答里面也有好多朋友问关于架构方面的问题,在这里我就将一些经常使用的游戏开发方面的知识跟大家介绍
一下, 一是给大家提供一个设计思路,在此基础上可以举一反三,二是大家可以通过这个平台共同学习。闲话不多说了,切入正题,FSM有限状态机,在游戏开发中如何使用?那些模块的设计需要它?接下来我们就分析一下游戏:
比如我们的玩家自身的状态切换,Idle,walk,attack等等,这些都属于状态的切换,可以用有限状态机;还有比如玩家去完任务:领取任务,杀怪,交易,交接任务;还有界面逻辑比如登录,进入场景,退出等等,在游戏中状态切换还是很多的,以上我说的都可以使用有限状态机。既然这么多地方可以使用,那么我们如何去设计有限状态机?
下面我们先设计我们的FSM有限状态机类图,如下所示:
![](http://www.manew.com/data/attachment/forum/201501/27/230153r8dtzizul0t42ewh.png.thumb.jpg)
在这里我的优先状态机,共五个类文件组成。下面就给大家一一说明:
第一个是IState类,这个类是抽象的,主要是实现有限状态机的接口,书写如下:
这个抽象类一共只有三个接口,一个是进入状态,停止状态,更新状态。
我们在游戏开发中经常面临架构设计问题,在蛮牛问答里面也有好多朋友问关于架构方面的问题,在这里我就将一些经常使用的游戏开发方面的知识跟大家介绍
一下, 一是给大家提供一个设计思路,在此基础上可以举一反三,二是大家可以通过这个平台共同学习。闲话不多说了,切入正题,FSM有限状态机,在游戏开发中如何使用?那些模块的设计需要它?接下来我们就分析一下游戏:
比如我们的玩家自身的状态切换,Idle,walk,attack等等,这些都属于状态的切换,可以用有限状态机;还有比如玩家去完任务:领取任务,杀怪,交易,交接任务;还有界面逻辑比如登录,进入场景,退出等等,在游戏中状态切换还是很多的,以上我说的都可以使用有限状态机。既然这么多地方可以使用,那么我们如何去设计有限状态机?
下面我们先设计我们的FSM有限状态机类图,如下所示:
![](http://www.manew.com/data/attachment/forum/201501/27/230153r8dtzizul0t42ewh.png.thumb.jpg)
在这里我的优先状态机,共五个类文件组成。下面就给大家一一说明:
第一个是IState类,这个类是抽象的,主要是实现有限状态机的接口,书写如下:
using UnityEngine; using System.Collections; public interface IState { void OnEnter(string prevState); void OnExit(string nextState); void OnUpdate(); }
这个抽象类一共只有三个接口,一个是进入状态,停止状态,更新状态。
相关文章推荐
- 架构纵横谈之二 ---- 架构的模式与要点
- 一步一步跟我学易语言之第二个易程序菜单设计
- BS项目中的CSS架构_仅加载自己需要的CSS
- 关于三种主流WEB架构的思考
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- C#中设计、使用Fluent API
- Android操作系统的架构设计分析
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- w3c技术架构介绍
- JavaScript 组件之旅(一)分析和设计
- linux学习笔记 linux目录架构
- C# 事件的设计与使用深入理解
- 大型网站设计注意事项大全
- Android中的脑残设计总结
- mysql数据库应付大流量网站的的3种架构扩展方式介绍
- 从零开始搭建MySQL MMM架构
- 用户权限管理设计[图文说明]
- C/S和B/S两种架构的概念、区别和联系
- unity实现多点触控代码
- 在Unity中实现动画的正反播放代码