【发布时间】:2019-12-10 23:13:39
【问题描述】:
我正在制作一个小游戏,我有一个 PlayScreen,它有一个 GameWorld,它有一个 Player。现在,每当玩家触摸传送块时,我将 PlayScreen 调暗,然后 Player 传送,然后 PlayScreen 再次亮起。
目前为了实现这一点,我在 Player 中添加了 boolean inTeleportAnimation。然后 PlayScreen 检查 update() 内的每一帧是否播放器处于传送动画中,如果是,它开始调暗屏幕。现在这看起来很好,因为它只检查 1 个布尔值/触发器。但稍后可能会有很多不同的触发器让 PlayScreen 执行某些操作(例如调暗屏幕)。让playScreen.update() 每帧检查每个触发器/布尔值可能是个坏主意,因为这意味着我需要为每个可能的触发器使用另一个 if 语句。我也不想让 PlayScreen 和 Player 的关系是双向的。
实现这一目标的最佳或“正确”方法是什么?
【问题讨论】:
-
观察者模式可能吗?
-
Publish-Subscribe 模式。实际上,此时在您的情况下,观察者可能更好。
-
那么在这种情况下 Player 将是可观察的,对吗?但是 PlayScreen 是主要的游戏循环类,它基本上每帧都会更新整个 GameWorld,所以它也会更新 Player。如果我让 Player 成为 observable 并让 PlayScreen 成为观察者,这基本上会创建一个双向关系。不知道我是否遗漏了什么,所以如果我错了,请纠正我。
标签: java relationship