新建项目(我起名为“Smartoys”)后,VS中出现一个新的解决方案,里边有两个项目,如图所示:
可以看到,一个是Smartoys项目,一个是SmartoysContent项目,前者用于保存解决方案的代码,后者用于提供资源,比如图片、声音等。
我有个习惯,那就是新建一个没接触过的东西的项目后,立刻会点击编译运行按钮,这时出现这样的窗口:
窗口中什么都没有,只有浅蓝色的背景,至此,一个XNA“游戏”项目新建成功。
结束调试,回头看看代码,就会看到大概是这个样子的代码,我把我的解释写在注释里,大家看看:
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
//不用管
SpriteBatch spriteBatch;
//绘制图片用的东西,以后经常接触到
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
//构造方法,暂时不用管
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
//初始化方法,跟构造器差不多
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
}
//在Initialize方法后被调用,也没什么意思
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
//没什么用
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here
base.Update(gameTime);
}
//Update方法是一个关键方法,用于每帧更新游戏数据
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
//修改这里的Color.***参数,就可以改变背景颜色
// TODO: Add your drawing code here
base.Draw(gameTime);
}
//Draw方法是一个关键方法,用于每帧绘制游戏画面
}
这里,Update和Draw是关键方法,前者用于更新游戏数据,后者用于绘制画面,虽然可以把所有的代码都放进其中一个方法里,但我还是建议分开写比较好。除了构造器以外的其他的方法,我学的时候没觉得有什么用。
XNA框架使用的是轮询机制,也就是每帧调用一次Update和Draw,Update负责修改需要修改的数据,而Draw则把画面擦除,然后重新画。
默认帧率是60fps,开发人员可以修改,但是在电脑上开发一般不修改,想修改的话就用以下代码:
TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 50); //放在Game1构造器的末尾
现在改成了50微秒刷新一次,也就是20fps。
本文介绍了使用XNA框架创建游戏的基本步骤,包括项目结构、关键方法的作用及如何修改帧率等内容。



被折叠的 条评论
为什么被折叠?



