65.9K
CodeProject 正在变化。 阅读更多。
Home

XNA 基础知识

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2013 年 10 月 18 日

CPOL

4分钟阅读

viewsIcon

27323

学习 C# 和 XNA 中的游戏开发基础知识

介绍 

在这篇文章中,你将学习如何使用C#作为编程语言创建一个简单的2D XNA游戏。本教程提供PC版本。

要求 

如果你运行的是Windows 7

  • Microsoft Visual Studio 2010 或 Visual C# Express 2010 (链接)
  • Microsoft XNA Game Studio 4.0 Refresh (链接)

如果你运行的是Windows 8或Windows 8.1

  • Microsoft Visual Studio 2010 或 Visual C# Express 2010 (链接)
  • Games for Windows Marketplace Client (链接)
  • Microsoft XNA Game Studio 4.0 Refresh (链接)

概念

一个游戏要运行,需要4个基本方法。


Initialize();
LoadContent();
Update();
Draw();


初始化启动时所需的所有对象、变量和管理器。
预加载图像、声音、字体等,并赋值给变量。
更新游戏逻辑。
在屏幕上绘制图像。

游戏

游戏无限运行,由计时器指定。

计时器测量Update()和Draw()在一个循环中执行的时间。

然后我们计算它的处理时间,并限制它以达到处理器的最大潜力,从而使游戏高效运行。

我们用纳秒时间测量一个进程,并用每秒帧数(FPS)限制它。


 Game.TargetElapsedTime = (60 / 1000); // Sample 60 FPS

这段代码将使游戏以每秒60帧的速度运行

游戏状态

每个程序都有一个关于当前正在发生什么的 状态。

  • 引言
  • 游戏菜单
  • 加载中
  • 游戏
  • 游戏结束


程序必须知道屏幕上正在发生什么(当前状态)。

示例代码

if(gameState == "Main Menu")
{
  runMainMenu();
}

if(gameState == "In Game")
{
  runGame();
}

if(gameState == "Settings")
{
  configureSettings();
}  


就像“主菜单”一样,它等待用户的输入,以了解用户在菜单中想要做什么。如果用户想玩游戏,它现在将进入“游戏进行中”状态,然后更新()和绘制()玩游戏所需的特定资源。

这包括游戏逻辑、图像绘制、声音播放以及游戏所需的一切。

XNA Game Studio

XNA Game Studio 4.0 Refresh是一个编程环境,允许你使用Visual Studio为Windows Phone、Xbox 360和Windows创建游戏。


XNA Game Studio包含XNA Framework,这是一套基于Microsoft .NET Framework的、为游戏开发设计的托管库。


XNA Framework的设计遵循.NET Framework的设计模式和习惯用法。使用XNA Game Studio,你可以同时使用XNA Framework和更通用的.NET Framework进行游戏开发。

MSDN 

创建项目

当你创建一个XNA项目(Windows游戏)时。

会自动添加2个项目

  • 游戏项目
  • 内容项目


XNA自动管理添加到游戏中的内容。这些文件被处理为纹理。

我们看到我们想看到的,但我们并不关心程序是如何做到的。

让我们将该项目命名为HelloXNA

步骤1:HelloXNA

我将向你展示如何首先在屏幕上显示一张图像。

将任何图像添加到内容项目中,我的图像是“omnom.png”。

我使用的omnom.png图像

步骤2:编码

全局声明(必须在任何方法之外声明)

Texture2D omnom;
Vector2 position;

下一篇 

omnom = Content.Load<Texture2D>(“omnom”);
position = new Vector2(100f, 100f);  

将其放在里面

protected override void LoadContent()

  • 将omnom图像赋值给Texture2D “omnom”
  • 将任何二维向量位置赋值给“position”

 

程序员的视角

程序员这样看待坐标平面。
原点位于屏幕的左上角


如前所述,我们主要使用坐标平面的第四象限。
我们将屏幕内的点定义为二维向量,即XY坐标平面

在XNA中,我们称之为视口,它包含

  • BufferHeight
  • BufferWidth

步骤2续

我们使用XNA的SpriteBatch绘制图像,它管理在屏幕上绘制的图形。

spriteBatch.Begin(); 
spriteBatch.Draw(omnom, position, Color.White);
spriteBatch.End(); 


将其放在里面

protected override void Draw(GameTime gameTime) 


它首先初始化sprite batch以开始绘制,绘制处理后的图像,然后刷新sprite batch以恢复游戏的状态。

步骤3:运行游戏


所有代码编写完成后,尝试运行游戏。你将看到屏幕上绘制的图像。

步骤4:移动

现在让我们让Omnom移动!

 

全局声明(在所有其他方法之外声明)

KeyboardState currentState;

下一步

我们现在使用键盘的光标键更新简单的移动逻辑。

然后我们根据键盘的当前状态分配currentState

currentState = Keyboard.GetState();

将这段代码放在里面

protected override void Update(GameTime gameTime)


确保currentState位于我们的游戏逻辑之上,以确保在执行任何操作之前首先捕获用户输入。

下一篇

我们现在根据按下键盘的光标键修改omnom的位置。

protected override void Update(GameTime gameTime)  

if(currentState.IsKeyDown(Keys.Up)) 
{ position.Y -= 5; } 
if(currentState.IsKeyDown(Keys.Down))
{ position.Y += 5; }
if(currentState.IsKeyDown(Keys.Left))
{ position.X -= 5; }
if(currentState.IsKeyDown(Keys.Right))
{ position.X += 5; }


向上移动,我们将一个数字从Y中减去以向上移动;

加到Y上以向下移动;

从X中减去一个数字以向左移动;

并添加到X以向右移动。

尝试运行游戏,看看Omnom如何移动。

现在你已经了解了2D游戏编程的基础知识。尝试创建一个简单的游戏,并将其发布在评论中。如果你有任何问题,请随时提问。=]
   

© . All rights reserved.