我正在使用unity3d(c#)进行2D游戏,角色由箭头键和2个动作按钮控制。
我的问题很简单,我可以解决它,但解决方案对我来说似乎有点脏。我使用的是一个非常简单的状态机,英雄在水平或垂直方向(地板和梯子)移动
我目前的状态延伸是:
HeroState - > HeroStateStatic - > HeroStateMovement
然后我将静态或运动扩展到最终状态:
HeroStateMovement - > HeroStateRunning或HeroStateStatic - > HeroStateLookUp
但是我总是调用一个巨大的外部函数(在Hero类中),它决定下一步做什么然后切换状态
我相信我应该在状态本身内进行这种推理,但阶梯状态有不同的检查和可能的选择然后在地板上说明我不知道如何重写这些类以使所有必要的代码只写一个(这就是为什么现在是英雄,而不是在州里... ...有什么像交叉延伸技术?
(我知道如何使用抽象类和接口,但它可能无法解决我的麻烦)
感谢您的帮助
答案 0 :(得分:0)
您的问题可以通过状态机真正解决,但由于您有一个庞大的班级决定该怎么做,您似乎无法实施state pattern。
这个blog post对在Unity应用程序中实现状态模式有很好的解释,你可以轻松地谷歌获取更多资源。
一旦我想创建一个使用方法作为状态的简单状态机,只是为了方便(因为模式使用类作为状态)。可以使用此方法将状态机置于状态内(也可以通过常规状态模式实现),因此如果您想了解这一点,可以阅读my stack overflow question。