我开始用libgdx开发一个游戏。这实际上是我的第二次尝试,因为当我开始第一次尝试时,我不知道libgdx的内涵。在我的第一次尝试中,我有一个包含逻辑和纹理的参与者子类。然后我开始阅读Gustavo Steigerts教程,我看到他试图把逻辑和视图分开。我也试过这样做,但是视图是我的参与者子类,包含关于大小和位置的信息,所以它必须进行碰撞检测,这是逻辑的一部分。另外,如果你在谷歌上搜索,你会发现使用Scene2d你无法完成MVC。那么,是否有一种使用MVC实现scene2d游戏的方法,或者我应该忽略这个模式,在一个扩展参与者的类中拥有模型和视图?
发布于 2014-01-20 16:19:34
这是一个主要基于观点的问题,但当涉及到scene2d和MVC模式时,这个问题经常出现。
一般来说,分离像模式这样的关注点总是有意义的。对于scene2d,这并不容易,因为Actor已经有了一个act()和一个draw()方法。
在我看来,你应该总是尝试建模你的游戏世界(实体)像他们一样。应该有一个Player,一个Rocket,或者一个Bunny类/参与者/实体,他们应该知道他们需要知道和管理自己的一切。这是一个实体-系统-框架的反面,其中你的实体是由“部分”组成的,而这些部分是由外部系统控制的。
大多数时候,把所有东西放在一起也会使它更加灵活,因为你已经在一个地方拥有了你所需要的一切。你的游戏可能会改变,你的实体也会改变。如果您发现您的实体太大,您仍然可以将它们分成几个部分,比如需要相互引用的PlayerModel、PlayerController和PlayerRenderer,然后触发act()和render()方法中的引用。
https://stackoverflow.com/questions/21238638
复制相似问题