1. 改进的要求
- 在上一版本的的基础上实现游戏对象的移动和游戏对象分离
- 首先建立一个动作的管理器,通过使用场景控制器,将需要移动的对象传入动作管理器。的把每个需要移动的游戏对象的移动方法提取出来,建立一个动作管理器来管理不同的移动方法。
- 对应传入对象,实现传入对象相应的action
- 找到在上一个版本中对于船和人物的移动函数,将移动函数改为调用自己对应的action方法。
2.改进的原因
- 当有很多不同的对象有相同的动作时,可以减少代码量,提高代码的复用性。
3.改进的部分
- SSAction——动作基类
SSAction为所有动作的基类,我们只需要其Transform属性来实现直线运动即可
1 | using System.Collections.Generic; |
- MoveToAction——基础动作类
构造我们需要的直线运动
1 | public class MoveToAction : SSAction |
- SequenceAction——组合动作类
在这次的游戏中,我们只需要将上岸和上船两个动作看作是两个不同方向的直线运动的组合,按照顺序将其加入动作队列,然后执行,执行完毕后,清空队列。
1 | public class SequenceAction : SSAction, ISSActionCallback |
- ISSActionCallback——动作管理的接口
实现动作和动作管理者之间的联系,使得动作管理类可以为动作的实现传递信息
1 | public interface ISSActionCallback |
- SSActionManager——动作管理的基类
对动作进行管理,为其传递游戏对象,以实现我们所需要的动作以及动作之间的切换
1 | public class SSActionManager : MonoBehaviour, ISSActionCallback |
- ActionManager——动作管理
管理动作,对动作的执行进行调度
1 | public class ActionManager : SSActionManager |