我正在Unity3d(c#)中使用箭头键和2个操作按钮控制字符的2D游戏。如何正确扩展字符的类
我的问题很简单,我可以解决它,但解决方案对我来说似乎有点肮脏。我用一个很简单的状态机,主人公是在水平或垂直方式移动(地面和梯)
我延长目前的状态是:
HeroState - > HeroStateStatic - > HeroStateMovement
然后我伸出静态或移动到最终状态:
HeroStateMovement - > HeroStateRunning或HeroStateStatic - > HeroSta teLookUp
但是我始终在呼唤它决定下一步该怎么做了巨大的外部函数(在英雄级),然后切换状态
我相信我应该有国家本身这个道理,但在规定阶梯有不同的检查和可能的选择,然后陈述在地板上,我不知道如何修改这些类,使所有必要的代码只写一个(这就是为什么现在是在英雄,而不是在州)...是在那里什么像交叉延伸技术?
(我知道如何使用抽象类和接口,但它可能并没有解决我的麻烦)
感谢您的帮助
thx回答 - 巨大的决策方法是巨大的,因为它被所有州共享,我的问题是,许多州共享这个决定解决 - 例如,WalkState RunState和JumpState有几乎相同的决策解决方案 - d需要的是多重继承,这在c#中不起作用,我正在c#中寻找其他解决方案。 – arximedes
我不完全理解。你说这个方法很大,因为它解决了很多状态。因此,这不是一个普通的决定,因为它必须解决许多国家的特点。为什么不是有一个巨大的方法,你不能在每个国家内的一个较小的决策方法?如果这三个状态具有几乎相同的解决方法,它可以从一个基类继承,那么为什么你需要多重继承? – Roberto
sry我的英语不是很原生的:D它解决了许多州的决定,例如:跑步或步行运动后,它会询问英雄是否想跑步或步行或跳跃或停留或转身,但如果你在房间的尽头它知道你不能前进,所以你只能转弯,有一些状态将你从楼梯移动到梯子,然后它会询问你可以在梯子上做什么,我有2个决定功能DecideFloor,DecideLadder,但是你可以在诸如LookUp,LookDown状态之类的场景中,你可以通过运行例如 – arximedes