欢迎来到天天文库
浏览记录
ID:37158988
大小:210.00 KB
页数:10页
时间:2019-05-19
《XNA教程6186670693》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、XNA教程虽然我们将会由浅入深,逐步学习XNA,但在开始之前,你最好具备以下知识:熟悉C#,有基本的程序设计经验,一定的图形学知识,包括3D、2D坐标变换,纹理,光照等等,当然,如果你看过我原来翻译的manageddirctxkickstart或者本来就熟悉MDX,那么学起来将会更加得心应手。此外,你还需要以下工具:1.VisualStudioExpress2005(注意,当前的XNAGSE还无法集成到VSpro中)2.XNAGameStudioExpress3.最新版本的DirectXSDK4.当然,最好还有MechCom
2、mander2的源代码(MechCommander2是MS发行的一个游戏,现在开源了,大概800m,这个连接不是太稳定,多试几次)。一切准备就绪了,但我们还需要弄清楚一些概念:XNA/XNAFramework:他是一个托管的专门针对游戏开发(不仅仅是绘图)的函数库,基于Direct3D9和.netframework2.0,可以同时在Windows和Xbox360上运行。ManagedDirectX2.0:MDX1.0的升级版,用于在.netframework2.0下使用directx,但ms后来决定提供一个完全用于游戏开发的
3、API,而不仅仅只是一套绘图函数库,因此,把MDX2.0整合到了XNA中,单独的MDX2.0也成为了一个被取消的计划。假设你从来没有使用过VC#Express,首先打开程序:选择WindowsGame(XNA)摸版,输入一个你喜欢的名字,然后单击OK。恭喜,你已经使用XNA创建了你的第一个windows游戏^_^选择Build->BuildSolution,然后按下F5(或者Debug->StartDebugging),现在可以看到你的程序在运行了:一个淡蓝色的窗口。好吧,我承认它并不是很有吸引力,但作为nxa的“hello
4、world”程序,它其实传达了许多很重要的概念。来看看模板生成的代码:打开Program.cs文件:usingSystem;namespaceWindowsGame1{staticclassProgram{//////Themainentrypointfortheapplication.///staticvoidMain(string[]args){using(Game1game=newGame1()){game.Run();}}}}很简单,所有程序都需要一个入口点,这里就是程序开始运行的地方。在main方法中,我们创建了G
5、ame1类的一个实例,并且调用了它的run方法。来看看类Game1,大部分工作都在这里完成。打开Game1.cs文件:usingSystem;usingSystem.Collections.Generic;usingMicrosoft.Xna.Framework;usingMicrosoft.Xna.Framework.Audio;usingMicrosoft.Xna.Framework.Components;usingMicrosoft.Xna.Framework.Graphics;usingMicrosoft.Xna.F
6、ramework.Input;usingMicrosoft.Xna.Framework.Storage;namespaceWindowsGame1{//////Thisisthemaintypeforyourgame///partialclassGame1:Microsoft.Xna.Framework.Game//Game1继承于Microsoft.Xna.Famework.Game{//Game类是一个游戏的基本骨架,这个对象把你从创建窗口完成了实在在屏幕上绘图的操作。当程序创建时,将会创建一个名为graphics的对象
7、,它是GraphicsComponent类的一个实例。GraphicsComponent是XNA中一个很重要也是很基本的类,提供了原来MDX中Presentationparameters和Deivce的功能。特别是GraphicsComponent的GraphicsDevice成员,其方法和属性和MDX中的Device都是类似的。-首先,确保创建了可用的设备,否则,跳出这个方法-把屏幕清理为背景颜色CornflowerBlur,当然,这里可以把背景设置为任何颜色,但通常都是黑色。-告诉显卡你将要开始在场景中绘制物体-告诉每个
8、子组件绘制其本身-告诉图形卡绘图操作已经完成-最后,把绘制好的图形呈现到屏幕上一旦程序开始运行之后,就会不停调用Update()方法。可以把这里认为是你的“gameloop”。这里将有大量的事件将要发生,包括AI计算,玩家的位置移动,输入等等,所有更新操作都在这里处理。对这个程序来说,我们
此文档下载收益归作者所有