前言
为了解决游戏过于麻烦的状态转换(人物动画过多),使用有限状态机。
缺点:代码量大
编写
- 使用多态和Switch
- new(状态设计模式)
类的介绍
PlyayCtrl:挂载在角色身上的脚本,用来控制状态机,(控制状态机中状态的切换)。
Machine:状态机器类,储存所有状态,对状态进行切换,和状态的保持工作。
Base: 状态的基类,给子类提供接口(方法)
Template:泛型类当前状态的拥有者
Idle Run Attack …等各个具体状态的实现(播放动画)

各个类的关系图介绍

脚本代码
1.状态基类
/// <summary>
/// 状态的基础类:给子类提供方法
/// </summary>
///
public class StateBase {
//给每个状态设置一个ID
public int ID{
get;set;}
//被当前机器所控制
public StateMachine machine;
public StateBase(int id)
{
this.ID = id;
}
//给子类提供方法
public virtual void OnEnter(params object[] args){}
public virtual void OnStay(params object[] args){}
public virtual void OnExit(params object[] args){}
}
2.状态拥有者类(泛型类)
/// <summary>
/// 状态拥有者
/// </summary>
public class StateTemplate<T> : StateBase {

本文介绍了如何在Unity3D中使用有限状态机(FSM)来简化游戏状态管理,特别是人物动画的切换。通过多态和Switch实现状态切换,包括PlyayCtrl(控制状态机)、Machine(状态机类)、Base(状态基类)和各种具体状态类如Idle、Run、Attack。文章提供了相关脚本代码并总结了FSM设计原则,强调了添加而非删除代码的实现方式。
最低0.47元/天 解锁文章
5347





