我已经有 10 年没有编程游戏了(我的最后一次经历是 DJGPP + Allegro),但我想我会在周末去看看 XNA 看看它是如何形成的。
我印象深刻,但是当我继续拼凑游戏引擎时,我有一个(可能)基本问题。
您应该在多大程度上依赖 C# 的委托和事件来推动游戏?作为一名应用程序程序员,我大量使用委托和事件,但我不知道这样做是否有很大的开销。
在我的游戏引擎中,我设计了一种“追逐凸轮”,可以附加到对象上,然后重新计算其相对于对象的位置。当物体移动时,有两种方法可以更新追踪凸轮。
- 在主游戏循环中有一个“UpdateCameras()”方法。
- 使用事件处理程序,并让追踪摄像头订阅 object.OnMoved。
我使用后者,因为它允许我将事件链接在一起并很好地自动化引擎的大部分。突然间,巨大而复杂的东西被降到了少数 3 到 5 行事件处理程序中……真是太棒了。
但是,如果每纳秒触发一次的事件处理程序会导致严重的减速,我将删除它并使用循环方法。
想法?