§5.5挑战:编写一个游戏组件
现在轮到你编写一些代码,并且在Windows和Xbox 360 平台上测试了。为了简单起见,你只须写一个简单的“frames per second” 显示在屏幕的左上角。记住Xbox 360上的安全区域;这样做的意义在于Xbox 360 和PC的每秒帧数的位置不同。注视下列代码,看它是如何被完成的:
#if XBOX360
Point fpsPos = new Point(2 + width / 15, 2 + height / 15);
#else
Point fpsPos = new Point(2, 2);
#endif
你应该就像SimpleCamera 类那样,用同样的方式插入这个游戏组件,并且你应该把它也放到游戏命名空间中。要绘制每秒帧率的计数器,在base.Draw方法被调用之前,使用BaseGame.Draw 方法的最后一行。然后进行一系列单元测试(见 program 类),并且看看是否每秒帧率的计数器在Windows和Xbox 360上(如果你有的话)被正确的显示。
为了计算每秒的帧数,每一帧你可能用到一个帧计数器变量,然后查明应用程序运行了多久,两个值相除来得到平均每一秒的帧数。一个更好的方式是仅仅计算每秒的帧数,然后每次经历一秒钟就再从0开始。
如果你没有自信实现它,往前跳过几章,看看那里用在游戏中的代码(它们都有fps计数器,里面有相应的代码)。例如,Rocket Commander游戏在debug模式和所有的单元测试中总是使用一个fps显示,如果你做错某些事,就能帮助你快速地目睹任何效能下降。对于组件代码,只要看一看本章源代码的FpsCounter类。
发布时间:2008/8/30 下午3:30:32 阅读次数:5674