XNA游戏开发之(七)——XNA游戏开发框架解析

 1 using System;
 2 
 3 namespace AlexGameBase
 4 {
 5     static class Program
 6     {
 7         /// <summary>
 8         /// 游戏主程序入口点
 9         /// </summary>
10         static void Main(string[] args)
11         {
12             using (Game1 game = new Game1())
13             {
14                 //运行游戏,游戏框架主循环
15                 game.Run();
16             }
17         }
18     }
19 }
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using Microsoft.Xna.Framework;//XNA基类库
  5 using Microsoft.Xna.Framework.Audio;//音频
  6 using Microsoft.Xna.Framework.Content;//资源(素材)
  7 using Microsoft.Xna.Framework.GamerServices;//玩家相关服务
  8 using Microsoft.Xna.Framework.Graphics;//图形图像
  9 using Microsoft.Xna.Framework.Input;//输入设备,键盘,手柄等
 10 using Microsoft.Xna.Framework.Media;//媒体
 11 using Microsoft.Xna.Framework.Net;//网络
 12 using Microsoft.Xna.Framework.Storage;//存储 保存游戏状态文件等
 13 
 14 namespace AlexGameBase
 15 {
 16     /// <summary>
 17     /// 游戏主程序类
 18     /// </summary>
 19     public class Game1 : Microsoft.Xna.Framework.Game
 20     {
 21         //可理解为"图形设备管理器",包括显卡设备
 22         GraphicsDeviceManager graphics;
 23         SpriteBatch spriteBatch;
 24         /// <summary>
 25         /// 游戏主程序构造函数(初始化)
 26         /// </summary>
 27         public Game1()
 28         {
 29             //可理解为装配"图形设备管理器"
 30             graphics = new GraphicsDeviceManager(this);
 31             //建立游戏素材导入管道,将素材导入游戏。
 32             this.Content = new ContentManager(Services);
 33             //设置游戏素材目录
 34             this.Content.RootDirectory = "Content";
 35         }
 36 
 37         /// <summary>
 38         /// 游戏启动前初始化区域,可初始化服务和加载非图形素材(只调用一次)
 39         /// </summary>
 40         protected override void Initialize()
 41         {
 42             //添加初始化逻辑代码
 43 
 44             base.Initialize();
 45         }
 46 
 47         /// <summary>
 48         /// 游戏运行时加载游戏素材
 49         /// </summary>
 50         protected override void LoadContent()
 51         {
 52             // 实例化"游戏精灵", 用来重绘游戏材质。
 53             spriteBatch = new SpriteBatch(GraphicsDevice);
 54 
 55             
 56         }
 57 
 58         /// <summary>
 59         /// 卸载游戏资源(素材)
 60         /// </summary>
 61         protected override void UnloadContent()
 62         {
 63             // 卸载非ContentManager资源
 64         }
 65 
 66         /// <summary>
 67         /// 游戏渲染方法 可将捕获时间放在此处,如键盘输入,手柄输入,音乐播放等。
 68         /// 每次调用渲染一帧
 69         /// </summary>
 70         /// <param name="gameTime">游戏时间.</param>
 71         protected override void Update(GameTime gameTime)
 72         {
 73             //获取键盘状态
 74            KeyboardState keyboardState= Microsoft.Xna.Framework.Input.Keyboard.GetState();
 75            //当按下Esc键退出游戏
 76             if (keyboardState.IsKeyDown(Keys.Escape))
 77                this.Exit();
 78             // 获取手柄状态
 79             if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
 80                 this.Exit();
 81 
 82             base.Update(gameTime);
 83         }
 84 
 85         /// <summary>
 86         /// 游戏窗体重绘
 87         /// 每一帧先调用Update方法,用来修改渲染参数,然后调用Draw方法渲染模型
 88         /// </summary>
 89         /// <param name="gameTime">Provides a snapshot of timing values.</param>
 90         protected override void Draw(GameTime gameTime)
 91         {
 92             // 清屏为蓝色
 93             GraphicsDevice.Clear(Color.CornflowerBlue);
 94 
 95             // TODO: Add your drawing code here
 96 
 97             base.Draw(gameTime);
 98         }
 99     }
100 }
101 
原文地址:https://www.cnblogs.com/AlexCheng/p/2120348.html