§2.4在Xbox 360看上去如何?
好了,现在游戏已经完成了,并且你也在Windows平台上做了很多测试。正如我在第一章中解释过的,要让Xbox 360上启动并以XNA Framework运行需要几个步骤。如果Xbox 360上的XNA Game Launcher已经启动,您可以试着编译您的XNA Pong游戏并把它部署到控制台。
对于Xbox 360,有一些特别重要的事要记住:
在本章的下一部分,您将在Xbox 360上测试整个游戏,并思考如何对游戏做更多的改进。如非必要不要使用任何外部DLL —— 虽然XNA Game library DLL是被支持的,但大多数Windows平台上的DLL将会调用Windows的系统DLL文件,而这些DLL文件在Xbox 360平台是不存在的,而且更糟的是,由于安全原因在Xbox 360平台上使用P-Invoke调用非托管DLL文件是不被支持的。也不要使用非安全代码或者进行任何调用外部代码、访问设备,或者使用不支持的特性的尝试。这样做是浪费时间,您最好按照规则行事。
时时进行但原创测试 ——在项目测试中,如果您把输出设置更改为Xbox 360,就要测试代码能否编译。您习惯使用的很多方法在Xbox 360上是不存在的。例如,在Xbox 360上动态库System.dll中没有TryParse方法,还有一些XNA方法和类,例如MouseState类甚至缺省也不被支持。
不要直接加载内容——在Windows平台上,借助于Texture2D或CompiledEffect构造器直接加载textures和shaders是可行的。而在Xbox 360上这些方法完全不存在;您只能使用内容管道来加载内容。如果您使用动态加载或重新加载textures/shaders的代码,它们就只能在Windows平台上工作,所以为Xbox 360构建程序要使用#if !XBOX 360…#endif 标记把代码包含起来。
保存游戏并加载其他内容——要保存游戏您可以使用Content命名空间以及很多有用的助手类。StorageContaine.TitleLocation在Windows平台也可以使用,并且只使用输出文件夹,借助它加载内容您要始终确保使用了正确的路径。从Xbox 360其他位置加载会导致IO操作的拒绝访问(Access Denied)异常。
测试分辨率——Xbox 360支持很多不同于PC的分辨率,所以您应该至少要测试2-3种不同分辨率来保证游戏正常运行。允许使用Gamepad操作一切——关于这一点,我所见过的大多数XNA游戏都犯了一个错误,它们要么只支持键盘输入,要么只支持Gamepad输入,这也就意味着它们要么只能运行在Windows上,要么只能运行在Xbox 360上。考虑到支持尽可能多的输入设备对您的游戏来说是非常有意义的。
在Xbox 360上进行Debug和单元测试——在Xbox 360控制台上进行Debug调试和单元测试并没有什么不同;可以应用相同的规则。或许跟踪错误和记录信息有点难,不过使用XNA可以很好进行逐步调试和检测单元测试。要好好利用这一点。顺便说一句:在Windows平台上,调试的时候如果编辑代码仍然可以继续执行,但是对于Xbox 360游戏却不行。这一点真讨厌。不过您多半是在Windows平台上进行主要的开发。
这个XNA Pong游戏在编码时始终考虑到了Xbox 360;所有您使用的方法和特性在Xbox 360上都受支持。所以在Xbox 360上测试这个游戏没什么大问题,您可以直接部署它,启动它,并且运行正常,如图2-11所示。
发布时间:2008/6/24 下午3:23:10 阅读次数:5469