7
游戏中绘画与逻辑的分离
我是一个刚刚开始玩游戏开发的开发人员。我是.NET专家,所以我迷上了XNA,现在正在为iPhone使用Cocos2d。我的问题确实更笼统。 假设我正在构建一个简单的Pong游戏。我要上Ball一Paddle堂课。来自商业世界的发展,我的第一个直觉是在这两个类中的任何一个中都没有任何绘图或输入处理代码。 //pseudo code class Ball { Vector2D position; Vector2D velocity; Color color; void Move(){} } 球类中没有任何东西可以处理输入或处理绘图。然后,我将有另一个班级,Game班级或我的班级Scene.m(在Cocos2d中)将球更新,并且在游戏循环中,它将根据需要操纵球。 事实是,在许多有关XNA和Cocos2d的教程中,我看到了这样的模式: //pseudo code class Ball : SomeUpdatableComponent { Vector2D position; Vector2D velocity; Color color; void Update(){} void Draw(){} void HandleInput(){} } 我的问题是,对吗?这是人们在游戏开发中使用的模式吗?它以某种方式与我习惯的一切背道而驰,让我的Ball类做所有事情。此外,在第二个示例中,我Ball知道如何移动,如何使用Paddle?是否Ball需要了解Paddle?在我的第一个示例中,Game该类将同时引用Ball和和Paddle,然后将这两个都发送给某个CollisionDetection管理器或其他东西,但是如果每个单独的组件自己完成所有工作,那么我该如何处理各种组件的复杂性呢?(我希望我有道理.....)