2011-06-07 40 views
0

現在對我的遊戲,我有一個場景管理器,它運行一個場景。它的作用是將事件消息發送到場景,例如渲染,輸入等。這使得我可以讓場景不知道場景管理器。我現在希望場景能夠向場景管理員發送一條消息,說明它想要切換到哪個場景(以純文本形式)。我怎麼能做到這一點,而不讓場景知道場景管理器類?告訴場景管理員你準備好切換場景了嗎?

感謝

+4

我不認爲現場應該告訴現場經理東西。告訴你的場景經理向他的場景解釋他們在生活中的適當位置。 – Stephen 2011-06-07 02:24:32

回答

1

一種方法是讓場景管理器不傳遞對自身的引用,而是引用一個較小的對象,該對象只支持特定消息傳遞所需的少量方法。

這可能是場景管理器實現的抽象類(又名「接口」),或者是一個單獨的對象。

如果你正在使用引用計數或智能指針,可考慮將其弱反向引用...

+0

只是要完成 - 我所描述的大概是@Lambdageek提到的觀察者模式,儘管我只是建議一個觀察者而不是傳統的列表...... – 2011-06-07 16:00:16

3

考慮Observer Pattern:場景將提供一個接口,用於通知感興趣的事件的觀察員。場景管理員可以是對「請求場景變更」事件感興趣的觀察者之一。然後,場景會在準備好交換時向所有觀察者發送通知。