Unity高复用性代码设计之【状态机的使用】 第七章

1. 状态机设计实例

状态机是一种用于管理角色不同状态(如闲置、移动、攻击等)的有效方法。通过状态机,我们可以轻松地在角色的不同状态之间切换,并保持代码的清晰和可维护性。

实例

创建一个CharacterStateMachine类来管理角色的状态。该类包含一个当前状态的引用和一个状态字典,用于存储所有可能的状态及其对应的实现。

public abstract class CharacterState
{
    protected Character character;

    public CharacterState(Character character)
    {
        this.character = character;
    }

    public abstract void Enter();
    public abstract void Update();
    public abstract void Exit();
}

public class CharacterStateMachine
{
    private CharacterState currentState;
    private Dictionary<string, CharacterState> states = new Dictionary<string, CharacterState>();

    public void AddState(string stateName, CharacterState state)
    {
        states[stateName] = state;
    }

    public void ChangeState(string newStateName)
    {
        if (currentState != null)
        {
            currentState.Exit();
        }

        currentState = states[newStateName];
        currentState.Enter();
    }

    public void Update()
    {
        if (currentState != null)
        {
            currentState.Update();
        }
    }
}

然后,为角色的每个状态(如IdleStateMoveStateAttackState等)创建一个具体的实现类,并在这些类中实现EnterUpdateExit方法。

通过这种方式,我们可以轻松地扩展角色的状态,并在不同的状态之间切换,而无需修改状态机的核心逻辑。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂跳跳虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值