当前位置: 首页 > news >正文

从零开发游戏需要学习的c#模块,第十六章(安装 MonoGame 并创建第一个窗口)

关于c#的基本内容我们差不多学完了接下来我们来学习安装monogame并创建第一个窗口。第一步安装 MonoGame 模板打开Visual Studio Installer开始菜单搜一下就有找到你安装的 Visual Studio 版本点击修改在右侧找到“游戏开发”或直接搜“游戏”勾选“使用 C# 的游戏开发”(或者c的游戏开发这个工作负荷点击右下角修改等待安装完成安装完成后打开 Visual Studio。第二步创建第一个 MonoGame 项目在 Visual Studio 里点击创建新项目在搜索框里输入MonoGame选择MonoGame Cross-Platform Desktop Application不是 Android/iOS 的项目名称写MyFirst2DGame选好位置点创建如果无法搜索到请使用备用方案用命令行装模板备选方案如果VS里搜不到那个插件或者安装了还是没用可以打开命令行CMD或PowerShell输入下面这行代码然后回车它会直接把模板文件安装到你的电脑里dotnet new install MonoGame.Templates.CSharp第三步了解项目结构创建完后你会看到以下文件文件作用Game1.cs游戏主类核心逻辑都在这里Program.cs启动入口和之前一样Content文件夹存放图片、音效、字体等资源第四步看Game1.cs的结构打开Game1.cs你会看到这些你非常熟悉的东西protected override void Initialize(){// 初始化游戏数据你之前的 Start()base.Initialize();}protected override void LoadContent(){// 加载图片、音效你之前的 LoadGame()}protected override void Update(GameTime gameTime){// 每帧更新逻辑你之前的 Update()// gameTime 里有 deltaTime相当于你的 Thread.Sleep(30)}protected override void Draw(GameTime gameTime){// 每帧渲染画面你之前的 Render()}第五步画出第一个东西——红色方块在game里替换using Microsoft.Xna.Framework;using Microsoft.Xna.Framework.Graphics;using Microsoft.Xna.Framework.Input;namespace MyFirst2DGame{public class Game1 : Game{private GraphicsDeviceManager _graphics;private SpriteBatch _spriteBatch;// 玩家相关private Texture2D playerTexture; // 玩家的纹理图片private Vector2 playerPosition; // 玩家的位置private int playerSpeed 200; // 移动速度public Game1(){_graphics new GraphicsDeviceManager(this);Content.RootDirectory Content;IsMouseVisible true;}protected override void Initialize(){// 设置窗口大小_graphics.PreferredBackBufferWidth 800;_graphics.PreferredBackBufferHeight 600;_graphics.ApplyChanges();// 玩家初始位置屏幕中央playerPosition new Vector2(400, 300);base.Initialize();}protected override void LoadContent(){_spriteBatch new SpriteBatch(GraphicsDevice);// ★ 创建一个 1x1 的白色纹理然后染色成红色playerTexture new Texture2D(GraphicsDevice, 1, 1);playerTexture.SetData(new[] { Color.White });}protected override void Update(GameTime gameTime){// 获取键盘状态KeyboardState keyboard Keyboard.GetState();// 移动速度 * 帧时间 每秒移动固定距离float speed playerSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;if (keyboard.IsKeyDown(Keys.W) || keyboard.IsKeyDown(Keys.Up))playerPosition.Y - speed;if (keyboard.IsKeyDown(Keys.S) || keyboard.IsKeyDown(Keys.Down))playerPosition.Y speed;if (keyboard.IsKeyDown(Keys.A) || keyboard.IsKeyDown(Keys.Left))playerPosition.X - speed;if (keyboard.IsKeyDown(Keys.D) || keyboard.IsKeyDown(Keys.Right))playerPosition.X speed;// ESC 退出if (keyboard.IsKeyDown(Keys.Escape))Exit();base.Update(gameTime);}protected override void Draw(GameTime gameTime){// 清屏为深蓝色GraphicsDevice.Clear(Color.CornflowerBlue);// 开始画东西_spriteBatch.Begin();// ★ 画一个 50x50 的红色方块代表玩家Rectangle playerRect new Rectangle((int)playerPosition.X - 25,(int)playerPosition.Y - 25,50, 50);_spriteBatch.Draw(playerTexture, playerRect, Color.Red);_spriteBatch.End();base.Draw(gameTime);}}}第六步运行按F5你会看到一个 800x600 的深蓝色窗口一个 50x50 的红色方块在屏幕中央按WASD或方向键移动方块按ESC退出注意program改为using var myGame new MY_FIRST_GAME.Game1(); myGame.Run();保证程序能够正常运行好了今天的课程到此结束关注我下期更精彩
http://www.gsyq.cn/news/1332822.html

相关文章:

  • 别再乱加偏置了!手把手教你搞定单/双电源运放的直流偏置(附Multisim仿真避坑)
  • Linux服务器DNS配置实战:基于BIND 9搭建内网权威与缓存解析服务
  • 麒麟系统磁盘异常自救指南:从Boot From Harddisk到桌面恢复的实战修复
  • 从Intel编译器到MKL:手把手教你为VASP 5.4.4搭建高性能计算环境(Ubuntu系统)
  • 2026 中国卷圆机权威实力排行榜 - 安徽工业
  • SARscape处理中DEM格式转换的隐形陷阱:从.hgt到.dat,我的踩坑与修复实录
  • 实测对比:RetinaFace在瑞芯微RK3588上的性能优化与部署心得(附Mobilenet0.25模型)
  • Python之rfc-tidy包语法、参数和实际应用案例
  • 保姆级教程:用晶晨S905L3B机顶盒搭建24小时在线的Home Assistant服务器(含Armbian写入EMMC)
  • 不只是格式化:深入理解Mac磁盘工具里的‘分区方案’(GUID/MBR/APM),选对才能跨平台读写
  • 别再只盯着mAP了!用MMDetection实测CIoU、EIoU对模型收敛速度的影响(附避坑指南)
  • 3大突破:AEUX如何重塑设计到动画的无缝工作流
  • CentOS 7/8 服务器上,用 DrissionPage 无头爬虫抓取动态Cookie的完整避坑指南
  • 别再死记公式了!用Python+SymPy玩转平衡电桥,5分钟搞定复杂电路等效电阻
  • 智慧工业火花火星烟火火灾检测数据集VOC+YOLO格式3965张4类别
  • 从Shader源码到C++:深入UE5材质节点ActorPosition的数据传递链路全解析
  • 大模型学习避坑指南:小白也能3个月斩获大厂Offer,速收藏!
  • 别再只记alert(1)了:Pikachu靶场实战中,这些高级XSS Payload和绕过技巧更有效
  • 使用 Taotoken CLI 工具一键为团队统一配置开发环境与模型端点
  • 麒麟系统离线部署OnlyOffice,我踩过的那些坑(附Docker镜像包和完整配置)
  • 如何为 OpenClaw 配置 Taotoken 以实现高效的 Agent 工作流
  • DeepSeek-R1/DW系列模型下载安装实战:从Hugging Face镜像加速到vLLM推理优化,手把手教你30分钟跑通首个Demo
  • 免费AI视频补帧神器:Squirrel-RIFE让老旧视频重获新生
  • ICode国际青少年编程竞赛-Python入门:从Dev.step到Spaceship.turn的探索之旅
  • 2026年5月最新降AI工具盘点,4款工具知网维普实测对比
  • 跨平台协同:AMESim与Matlab/Simulink联合仿真环境搭建全攻略
  • 别再只记理论了!用Wireshark抓包带你真正看懂HRP协议的报文交互
  • 从化做出口怎么找财税服务商?从化出口企业找财税服务商,这6个陷阱踩了就是真金白银的损失 - 欢欢在创业
  • 专业视角 | 宜昌高考志愿填报的「隐形陷阱」:90%家长忽略了这三点 - 新闻快传
  • 可定制GEO优化系统选型观察:2026年企业决策参考