Nez is a free 2D focused framework that works with MonoGame and FNA
MIT License
Nez 是一个基于 MonoGame/FNA 的多功能 2D 游戏框架. 它提供了你制作 2D 游戏的地基. 一些它拥有的特性比如:
inspect ENTITY_NAME
就能查看和编译字段/属性并且调用函数仅仅通过一个鼠标点击Emitter
class), 用于 core events, 支持自定义事件Core.schedule
方法)Monogame Cross Platform Desktop Project
项目Nez.Portable/Nez.csproj
的引用
Nez.Portable/Nez.MG38.csproj
代替Game1.cs
类), 并且继承Nez.Core
如果你希望使用任何内建的特效和 PostProcessors 你也要链接 DefaultContent/effects
目录到你项目的 Content/nez/effects
目录, DefaultContent/textures
到 Content/nez/textures
同理. 确保你的 Content 构建动作设置了 "复制到输出目录" 属性, 这样它们才会复制到你编译好的游戏里. 例子见 Nez.Samples 项目.
注意: 如果你得到了一个 project.assets.json
文件缺失的编译错误, 请在Nez根目录运行 msbuild Nez.sln /t:restore
以修复它们.
所有 Nez 的 shaders 都是为 OpenGL 编译的, 所以请确保使用 DesktopGL 模板, 不要用 DirectX! Nez 只支持 OpenGL 的开箱即用, 以确保跨 安卓/iOS/Mac/Linux/Windows 平台.
如果你需要开发一个移动端应用, 你需要调用 Input.Touch.EnableTouchSupport()
来开启触屏的支持.
你可以找到一些例子仓库在这里. 包含很多例子场景, 演示了很多Nez的基本内容. 这个Youtube 列表也包含了一些相关的内容.
注意你必须安装所需要的 FNA 本机库, 这是你使用 FNA 来使用 Nez 需要准备做的事:
期望的目录结构如下:
或者, 你可以使用提供给 Visual Studio 和 VS Code 的 Nez + FNA 模板在这里
Nez 的点点滴滴都来自互联网的各地. 如果你看到一些熟悉的代码但没有被注明, 请提一个带详细信息的 issue, 这样我们可以注明这个代码.
我在此特别感谢三位, 他们的仓库列表如下. Monocle Engine 和 MonoGame.Extended 让我在第一次思考 MonoGame 是否适合制作游戏时让我几乎立刻就准备好并且使用 MonoGame 启动了游戏. libGDX scene2D UI 对 Nez 的 UI 系统制作是一个巨大的飞跃. Nez 使用了很多来自下面三个仓库的代码和想法:
Maddy Thorson's fantastic Monocle Engine (译注: maddy 给的仓库链接已失效, github上有个镜像仓库)
Dylan Wilson 的精彩的 MonoGame.Extended 和它对 Farseer Physics Engine 转化成便携库的初步工作. Farseer 以 Microsoft Permissive v1.1 许可.
Nathan Sweet 的 libGDX 的 Scene2D UI libGDX. Nez UI 基于 libGDX Scene2D, 其以 Apache 许可.
结尾译注: 所有文档以英文原版为准, 初稿由Saplonily翻译, 可能缺少校对, 部分专业名词、术语可能翻译不准确. 故仅供个人学习参考.