MonoGame 引擎使用(一)

官方地址: https://monogame.net

MonoGame 是个免费、开源、跨平台的 C#/.NET 游戏开发框架, 是微软已停止维护的 XNA Framework 的社区增强重制版

核心定位:

  • 代码优先(Code-First): 只提供底层库与 API 并无内置可视化编辑器, 适合喜欢手写代码、追求高度可控的开发者

  • 游戏框架而非游戏引擎: 提供图形、音频、输入、资源管理等基础能力, 你可以在此之上搭建自己的引擎/工具链

目前支持跨平台特性和 2D/3D 渲染, 而且基于 dotnet 可以挂靠 C# 第三方资源库

注意: 代码优先也就代表必须纯粹命令行编写所有业务功能, 这部分对于协同是最大问题

这里首先区安装 dotnet 对应版本, 这边直接采用默认 LTS 版本: dotnet-10

项目安装

这里安装之后后续有些组件可以添加安装:

1
2
3
4
5
6
7
8
# 配置安卓支持
dotnet workload install android

# 配置 iOS 支持
dotnet workload install ios

# 直接安装项目模板
dotnet new install MonoGame.Templates.CSharp

个人喜欢用 Rider 开发, 官方配置 https://docs.monogame.net/articles/getting_started/2_choosing_your_ide_rider.html

Rider 配置 MonoGame 插件就可以在项目新建解决方案, 会自动安装 MonoGame.Templates 组件, 游戏类型有以下方式:

  • 2D StartKit: 简单的 2D 游戏基础模板

  • Android App: 安卓专用项目, 必须先装 android workload

  • iOS App: 苹果专用项目, 必须先装 ios workload

  • Cross-Platform Desktop App: 跨平台的通用模板, 支持 Windows/macOS/Linux 三端通用

  • Windows Desktop App: Window 系统专属应用模板

如果是打算跨桌面方案就选择 Cross-Platform 作为默认选项, 其他按照特定平台做专门构建

跨平台的默认支持包含游戏主机等平台, 可以作为独立游戏跨平台开发上架到主机平台

MonoGame 支持利用 bridge.net 将 C# 代码移植到 Web 平台支持, 但是该方案稳定性还是存疑

如果是简单学习, 这里最好创建 2D StartKit 学习下官方的基本代码架构, 这里先构建基本的项目

reference_img_1

等待构建初始化即可, 这里会提示错误 缺少 Android|iOS 工作负载(workload), 为了只需要桌面运行可以不去管这些

主要运行的是 DesktopGL 方案, 直接运行 MonoGame2DGame.DesktopGL 项目即可

这里会提示错误:

1
2
3
4
5
6
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '9.0.0' (x64)
.NET location: C:\Program Files\dotnet\

The following frameworks were found:
10.0.7 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

这是因为目前我采用的是 dotnet-10, 而他内部项目编写采用的 dotnet-9, 目前官方是推荐采用高 LTS 版本

而之所以默认采用 dotnet-9 是因为 Android /iOS 必须用 .NET 9+

调整默认 TargetFramework 版本: 右键 MonoGame2DGame.DesktopGL 项目右键 编辑 - 编辑MonoGame2DGame.DesktopGL.csproj

1
2
<!-- 将 net9.0 切换 net10.0 -->
<TargetFramework>net10.0</TargetFramework>

修改完成之后重新编译项目即可, 完成之后点击就会运行个官方小游戏, 主要的游戏逻辑在 MonoGame2DGame.Core 之中