我正在研究一個簡單的遊戲設計,並且我想將我的遊戲對象分解爲更多可重用的組件。但是我陷入瞭如何實現我所想到的設計。這裏有一個例子:如何避免遊戲渲染組件循環引用?
我有一個Logger對象,其工作只是存儲一個消息列表並呈現給屏幕。你知道,伐木。記錄器最初只是列表,遊戲循環呈現出它的內容。然後我將渲染邏輯移入Logger.Draw()方法,現在我想將它進一步移動到LoggerRenderer對象中。
實際上,我想讓遊戲循環調用RenderAll,然後調用Logger.Render,然後調用LoggerRenderer.Render並最終輸出文本。所以Logger需要包含一個Renderer對象,但是Renderer需要訪問Logger的狀態(消息隊列)才能渲染。
我該如何解決?我應該將消息隊列和其他狀態信息顯式傳遞給Render方法嗎?或者遊戲循環直接調用渲染器並且鏈接回記錄器,但RenderAll方法從來不會真正看到記錄器對象本身?
這種感覺有點像命令模式,但我把它搞砸了。
那麼Logger對象也缺少「_renderer = new Renderer()」?唯一的連接來自Renderer - > Rendered_Object,而不是以另一種方式返回? – CodexArcanum 2010-05-11 21:48:32
正確。否則,首先將你的渲染器代碼分解成它自己的類是什麼意思? – 2010-05-11 21:49:31