游戏中的状态模式

状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
主要的解决问题:主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
状态模式的实现:
环境(Context)角色:也称为上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。
抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。
具体状态(Concrete State)角色:实现抽象状态所对应的行为。
使用场景: 1.行为随状态改变而改变的场景。
2.条件、分支语句的代替者。
最简单的状态改变就是时间了,用时间作为判断状态改变的条件,随着时间的变化,改变类不同的行为。
这段时间在学习使用Unity做了一个RPG类型的游戏,在当中就使用到了状态模式。

//主角的状态
public enum PlayerState
{
    ControlWalk,
    NormalAttack,
    SkillAttack,
    Death,
    NewAttack
}

我将主角的状态设置为正常走动,普攻,技能攻击,死亡和后面加的一个新的状态,作用在自身的技能。不同的主角状态对应不同的行为,不需要写许多的if else的语句来实现对应的功能,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为,代码的扩展性也会更强。
优点:我们采用状态模式,利用多态的特性可以消除掉if else结构。这样所带来的好处就是可以大大的增加程序的可维护性与扩展性。
以上就是个人对于状态模式的理解,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值