状态机--状态机6,关于战斗兵种的状态机初步优化和状态设计
2015-04-03 12:44
253 查看
先提供下载地址:http://pan.baidu.com/s/1kTqsD6n
解压缩出来直接双击exe就可以运行了,代码在src里面,目录是这样的
分成6个版本,高层模块的调用在scenes中的MainScene.lua中,代码可见
版本控制在onEnter()函数中,按对应的字母键调用不同的函数进行状态切换
最后一个版本的运行结果如下:
全部代码已经提供出来了,大家可以自己去看,下面说下优化方向:
1.状态创建器,并不需要为每一个兵种实例对象创建一个新的状态创建器,创建一个,所有兵种对象共用
2.状态切换规则,同状态创建器一样,基本上所有的兵种对象的状态切换规则都一样,如有需求,则创建新的绑定
3.具体状态,每次进行主状态的切换或子状态的添加时都创建一个新的实例对象,这样没什么必要,将新创建的状态
实例对象放到数组中,切换或添加时先在数组中找有没有,没有则创建后放到数组中,有的话直接拿出来用
简单说一下,在战斗类型的游戏中,对象的状态切换主要是技能,buff,和AI这三部分去控制,
大部分状态切换由控制buff驱动,下面来说下MajorStateBase的设计初衷
我们将状态区分为主状态和子状态,主要原因有以下几点
1.是通过继承不同基类,当拿到实例对象时,可以通过getStateType()接口区别是主状态还是子状态
2.实现特殊需求,在技能设计中,有些技能会打断角色当前的状态,
如角色处于攻击状态,准备执行攻击动作,这时受到一个带有打断动作的技能,那么攻击被打断,
切换到待机状态,状态被打断可能需要做一些处理,在设计中只有主状态会被打断,如攻击状态,
召唤状态等等,每个主状态被打断需要做不同的处理,那么我们可以在主状态基类MajorStateBase
里加上对应的打断接口供外部调用,在具体的主状态中重写函数,实现不同的被打断逻辑
到目前为止我们已经实现一个比较高级的状态机,下面一篇文章中将说一下进阶的状态机
解压缩出来直接双击exe就可以运行了,代码在src里面,目录是这样的
分成6个版本,高层模块的调用在scenes中的MainScene.lua中,代码可见
版本控制在onEnter()函数中,按对应的字母键调用不同的函数进行状态切换
最后一个版本的运行结果如下:
全部代码已经提供出来了,大家可以自己去看,下面说下优化方向:
1.状态创建器,并不需要为每一个兵种实例对象创建一个新的状态创建器,创建一个,所有兵种对象共用
2.状态切换规则,同状态创建器一样,基本上所有的兵种对象的状态切换规则都一样,如有需求,则创建新的绑定
3.具体状态,每次进行主状态的切换或子状态的添加时都创建一个新的实例对象,这样没什么必要,将新创建的状态
实例对象放到数组中,切换或添加时先在数组中找有没有,没有则创建后放到数组中,有的话直接拿出来用
简单说一下,在战斗类型的游戏中,对象的状态切换主要是技能,buff,和AI这三部分去控制,
大部分状态切换由控制buff驱动,下面来说下MajorStateBase的设计初衷
我们将状态区分为主状态和子状态,主要原因有以下几点
1.是通过继承不同基类,当拿到实例对象时,可以通过getStateType()接口区别是主状态还是子状态
2.实现特殊需求,在技能设计中,有些技能会打断角色当前的状态,
如角色处于攻击状态,准备执行攻击动作,这时受到一个带有打断动作的技能,那么攻击被打断,
切换到待机状态,状态被打断可能需要做一些处理,在设计中只有主状态会被打断,如攻击状态,
召唤状态等等,每个主状态被打断需要做不同的处理,那么我们可以在主状态基类MajorStateBase
里加上对应的打断接口供外部调用,在具体的主状态中重写函数,实现不同的被打断逻辑
到目前为止我们已经实现一个比较高级的状态机,下面一篇文章中将说一下进阶的状态机
相关文章推荐
- 状态机--状态机1,关于战斗中兵种状态的初步设计
- 状态机--状态机7,关于战斗兵种的状态机进阶设计与消息系统
- 状态机--状态机2,关于战斗中兵种状态的新增状态
- 状态机--状态机4,关于战斗中负责兵种状态切换的状态机
- 状态机--状态机3,关于战斗中兵种状态的状态的结束
- 状态机--状态机8,关于战斗兵种的复合状态和动作融合技术
- 状态机--状态机5,关于战斗兵种的多状态
- iOS 设计 用户为王 - 关于征询授权、注册及加载等待的体验优化
- 关于camera:基于S12单片机的循迹小车视觉系统设计与优化
- 关于多线程同步的初步教程--Metux的设计及使用
- 关于架构优化和设计,架构师必须知道的事情
- 表间关联拖放设计界面初步完成,状态保存没问题
- 关于ZFS和数据库存储性能的优化设计
- 关于状态变迁一致性接口高性能设计
- Java设计模式之从[游戏中的兵种状态转换]分析状态(State)模式
- 前端设计中关于外部js文件加载的速度优化
- 关于多线程同步的初步教程--Simaphore的设计及使用
- 关于多线程同步的初步教程--Barrier的设计及使用
- "个性化空间"性能优化方案设计初步
- 数据库设计中关于数据类型的优化