Presentation is loading. Please wait.

Presentation is loading. Please wait.

2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第三章 XNA 遊戲程式基本架構.

Similar presentations


Presentation on theme: "2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第三章 XNA 遊戲程式基本架構."— Presentation transcript:

1 2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第三章 XNA 遊戲程式基本架構

2 本章目的 探討XNA遊戲程式內部的基本架構與遊戲開發流程 示範如何完成一個簡單的XNA遊戲方案

3 新增 XNA專案

4 新增XNA專案

5 XNA相關的命名空間 using Microsoft.Xna.Framework; // 和XNA架構相關的型別
using Microsoft.Xna.Framework.Audio; // 和XNA聲音相關的型別 using Microsoft.Xna.Framework.Content; // 和XNA內容輸出入相關的型別 using Microsoft.Xna.Framework.GamerServices; // 和XNA玩家權限相關的型別 using Microsoft.Xna.Framework.Graphics; // 和XNA繪出相關的型別 using Microsoft.Xna.Framework.Input; // 和XNA輸入相關的型別 using Microsoft.Xna.Framework.Media; // 和XNA多媒體相關的型別 using Microsoft.Xna.Framework.Net; // 和XNA網路相關的型別 using Microsoft.Xna.Framework.Storage; // 和XNA儲存相關的型別

6 Game1.cs程式中的六個函數 Game1() Initialize() LoadContent() UnloadContent()
Update() Draw()

7 XNA的方案總管 一個圖示 (Game.ico) 一個.png圖形檔案(GameThumbnail.png)
兩個程式檔案 (Game1.cs 和 Program.cs)

8 Program.cs 程式 using System; namespace WindowsGame1 {
static class Program static void Main(string[] args) using (Game1 game = new Game1()) game.Run(); }

9 一般遊戲程式的流程

10 Game1類別內遊戲程式的流程

11 game.Run() 的執行流程

12 Game1 的全域變數與建構元 public class Game1 : Microsoft.Xna.Framework.Game {
GraphicsDeviceManager graphics; SpriteBatch spriteBatch; public Game1() graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; }

13 使用 SpriteBatch物件來繪出2D圖形
spriteBatch.Begin(); // 設定2D圖形的繪出方式 spriteBatch.Draw(...); // 繪出第一張 2D圖形 spriteBatch.Draw(...); // 繪出第二張 2D圖形 spriteBatch.End();// 結束2D圖形的繪出

14 內容資源管理員 Content.RootDirectory = "Content";

15 XNA內建的資源檔案輸入器

16 XNA內建的資源檔案輸入器 AudioImporters用來讀入音效檔案
EffectImporter 用來讀入.fx 著色器特效檔案,該檔案是以高階著色語言(HLSL)撰寫,用來描述頂點著色器、像素著色器等產出方式與特效的檔案 FBXImporter用來讀入以 .fbx 格式儲存的3D模型檔案 XImporter 用來讀入以 . x 格式儲存的3D模型檔案 TextureImporter用來讀入2D圖形檔案,可支援的格式包括 .bmp、 .dds、 .dib、 .hdr、 .jpg、 .pfm、 .png、 .ppm、 和 .tga FontDescriptionImporter用來讀入以 .spritefont格式儲存的字型檔案 XAP 輸入器用來讀入以 XACT 工具製作出來的聲音檔案

17 XNA的內容資源管道流程

18 遊戲初始化 protected override void Initialize() {
// TODO: Add your initialization logic here base.Initialize(); }

19 LoadContent() 上載資源檔案 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 }

20 UnloadContent() 釋放資源 protected override void UnloadContent() {
// TODO: Unload any non ContentManager content here }

21 Update() 得到輸入、進行邏輯更新 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); }

22 遊戲迴圈內定每秒執行60次

23 更換更新時間 public Game1() { …
this.TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 33);//三十分之一秒 }

24 運作流程改為連續更新 public Game1() { this.IsFixedTimeStep = false; }

25 Draw() 繪出 protected override void Draw(GameTime gameTime) {
graphics.GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here base.Draw(gameTime); }

26 XNA專案加入新的類別

27 XNA專案加入GameComponent類別

28 Game1物件的子元件GameComponent物件

29 The End


Download ppt "2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第三章 XNA 遊戲程式基本架構."

Similar presentations


Ads by Google