3

我开始使用 libgdx 开发游戏。这实际上是我的第二次尝试,因为当我开始第一次尝试时,我并不了解 libgdx。在我的第一次尝试中,我有一个带有逻辑和纹理的演员子类。然后我开始阅读Gustavo Steigerts 教程,我看到他试图将逻辑和视图分开。我尝试做同样的事情,但视图是我的演员子类,包含有关大小和位置的信息,所以它必须进行碰撞检测,这是逻辑的一部分。此外,如果您在 Google 上搜索,您会发现使用 Scene2d 无法执行 MVC。那么有没有办法使用 MVC 来实现一个场景 2d 游戏,或者我应该忽略这个模式并在一个扩展演员的类中拥有模型和视图?

4

1 回答 1

3

这是一个主要基于意见的问题,但在涉及到 scene2d 和 MVC 模式时,它经常出现。

一般来说,像模型-视图-控制器模式尝试做的那样分离关注点总是有意义的。使用scene2d 这并不容易,因为Actors 已经有一个act()和一个draw()方法。

在我看来,您应该始终尝试像它们一样为您的游戏世界(实体)建模。应该有一个Player,也许是一个,也许是Rocket一个Bunny类/演员/实体,他们应该知道他们需要知道和管理自己的一切。这与实体系统框架相反,在实体框架中,您的实体由“部分”组成,而这些部分由外部系统控制。

大多数情况下,将所有内容放在一起也使其更加灵活,因为您已经在一个地方拥有了所需的一切。您的游戏玩法可能会改变,您的实体也会如此。如果您发现您的实体太大,您仍然可以将它们分成几个部分,例如 a和 a PlayerModel,它们需要相互引用,然后在您的and方法中触发它们。PlayerControllerPlayerRendereract()render()

于 2014-01-20T16:19:34.723 回答