我有一个“设计模式”问题。我想让玩家改变他的状态。让我们说如果你愿意,我有三个州或超级大国。他们每个人都有不同的能力。如果这个能力只是基于一些属性(比如质量或速度),我可以在玩家身上改变它,一切都会正常。
但如果还有其他一些功能发生了变化呢?让我们说如果玩家处于状态2并且他跳跃动画是不同的,其他一些事情会改变。现在我知道我可以在状态更新循环中进行大量检查,但我想让这个更优雅。
直到现在我的想法是制作generalPlayer对象并且每个特殊玩家都从它继承并添加特殊能力,当玩家改变状态时,我会将玩家的实例更改为该实例。
还有更好的方法吗?我使用c#作为脚本语言
答案 0 :(得分:1)
我对这种方法的问题是你为一个玩家使用多个不同的对象。每次玩家改变状态时,传递数据可能会有些混乱,这样可以更好地避免。由于C#具有委托,为了我们的目的,它们的行为与第一类函数非常相似,因此可以通过在每次状态更改时更改某些例程和字段值来更改播放器的行为。这使您可以将数据保存在一个对象中,并在不依赖条件的情况下即时更改行为。我听过很多次的简洁短语,一个对象封装了状态和行为。在C#中,您可以通过操作字段值来更改状态,并通过依赖委托来更改行为。这应该涵盖你的问题。
答案 1 :(得分:0)
感谢朋友,我找到了最合适的溶剂。我使用的是策略模式,然后将不同的实例放在我用来控制播放器的界面上。它就像魅力一样。谢谢大家的帮助。