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

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

國文報告 組長 : 王俐婷 組員 : 陳威宇、 林恩楷、陳 平 、 歐昱 侖、李浩維 、張凱威、黃鵬展.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
项目7 面向对象高级.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
指導教師:石燕鳳 組長:章懷升 組員:張功藝 林昀澍 陳品全
实证 作业:语言调查 赵万林 哲社学院 学号:
四資二甲 第三週作業 物件導向程式設計.
逻 辑 学 主讲:李贤军.
三重有情、修德有愛 2003/12/24.
類別與物件 Class & Object.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
第四章 在 C# 中实现 OOP 概念.
淺談Visual C# 程式設計 國立台灣師大附中 李啟龍 Jason.
程式設計實作.
程式撰寫流程.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第9章 多线程 王德俊 上海交通大学继续教育学院.
Java程序设计 第9章 继承和多态.
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 2D圖形與字型的呈現.
C#面向对象程序设计 $7 继承和多态性.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第五章 頂點定義與基本形狀的繪出.
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第九章 相機類別與玩家角色.
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第七章 音樂音效.
視窗程式設計 (Windows Programming)
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
檔案讀寫與例外處理 (File IO and Exception Handling)
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
C#程序设计基础 第二章 数据类型.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
CLICK HERE TO ADD YOUR TITLE
XNA 4.0 Sprites & Fonts 靜宜大學資工系 蔡奇偉 副教授 © 2011.
辅导课程八.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
C#程序设计基础 $3 成员、变量和常量.
CLICK HERE TO ADD YOUR TITLE
72% 29% 33% ADD YOUR TITLE HERE 点击此处添加文本信息。
Xxxx集团有限公司 封面页.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
主编:钟元生 赵圣鲁.
简约商务大气PPT模板 简约商务大气PPT模板.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
第二章 Java基本语法 讲师:复凡.
30% 30% CLICK HERE TO ADD YOUR TITLE CLICK HERE TO ADD YOUR TITLE
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
B A C D ADD YOUR TEXT ADD YOUR TEXT ADD YOUR TEXT ADD YOUR TEXT
龍老師我不會Debug QQ.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
ADD YOUR TITLE HERE ADD YOUR NAME.
项目3.3:图形对象 【项目描述】 在文本中插入图片、图形、剪贴画、艺术字、公式,并对这些对象进行效果设置与排版,使文稿图文并茂。 【能力目标】 能够在文档中插入剪贴画和外部图片, 并能对图片进行剪裁调整,设置环绕方式等。 掌握绘制自选图形、添加文字调整大小样式的方法。 能够在文档中插入艺术字、公式并进行编辑,
Click here to add your title
辅导课程十二.
JAVA 程式設計與資料結構 第三章 物件的設計.
第四教学项目 话剧排练及影视鉴赏.
中式烹调技艺 第五章.
判斷(選擇性敘述) if if else else if 條件運算子.
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
就學貸款 相關注意事項 學生事務處 /生活輔導組.
生命銀行 生命銀行.
Summary
Click here to add your title
03 Click here to add your text.Click here to add your text.Click here to add your text.Click here to add your text.Click here to add your text.Click here.
Presentation transcript:

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

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

新增 XNA專案

新增XNA專案

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儲存相關的型別

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

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

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

一般遊戲程式的流程

Game1類別內遊戲程式的流程

game.Run() 的執行流程

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

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

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

XNA內建的資源檔案輸入器

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 工具製作出來的聲音檔案

XNA的內容資源管道流程

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

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 }

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

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); }

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

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

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

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

XNA專案加入新的類別

XNA專案加入GameComponent類別

Game1物件的子元件GameComponent物件

The End