今天我来介绍一下XNA的另一个开源实现FNA。FNA与MonoGame的区别在于:FNA的跨平台是基于运行库的而MonoGame的跨平台是基于源码的,也就是说理论上FNA编译好的游戏不需要修改源码就可以运行在不同的硬件平台,而MonoGame需要将源码放到指定平台重新编译才能运行。

FNA支持Windows, macOS, GUN/Linux, iOS, tvOS, XBox One, Nintendo Switch ,Google Stadia

 

下载FNA及其他必备

 

打开官网:https://fna-xna.github.io/ 点击Download

image

点击FNA 20.01,FNA每月更新一个版,以【年.月】形式命名

image

下载原生依赖库

image

点开Visit the FNA wiki 进入使用说明页面下载【FNA Template】项目模板

image

下载FNA-Template源码,https://github.com/AndrewRussellNet/FNA-Template/archive/master.zip 操作如图:

image

查看README.md,以windows系统为例,还需要下载DirectX SDK (June 2010)

 

下载完成后安装DirectX SDK (June 2010)

接着解压【FNA-Template-master.zip】,【fnalibs.tar.bz2】,【FNA-2001.zip】三个文件。

image

打开【FNA-Template-master】目录,将【FNA-2001】目录中的内容拷贝到【FNA-Template-master】目录的FNA文件夹中

image

拷贝【fnalibs】目录中的所有内容粘贴到FNA-Template-master】目录的【fnalibs】文件夹中

image

打开【FNA-Template-master】目录,用Visual Studio 2017打开【FNATemplate.sln】

image

选中解决方案,点击右键【生成解决方案】

image

等待完成!

image

 

选中FNATemplate,点击右键【设为启动项目】

image

点击【启动】

image

运行如图:

image

创建Visual Studio项目模板

按键盘 Win+R,输入cmd 回车

使用cd命令进入CreateTemplate项目的bin中的Debug文件夹

image

输入

CreateTemplate --template FNATemplate "C:\outputPath"

回车

打开C盘的outputPath目录可以看到FNATemplate文件夹

image

在空白处点击鼠标右键新建【FNATemplate.zip】文件

image

使用压缩软件打开【FNATemplate.zip】,同时打开【FNATemplate】文件夹。将FNATemplate文件夹中的所有内容拖拽到压缩软件窗口内

image

点击【是】

image

最后拷贝【FNATemplate.zip】文件,将它复制粘体到【C:\Users\【当前用户】\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\MonoGame】中接口。

image

这时候新建项目会有错误:

image

解决办法:

首先新建一个解决方案,操作如下图:

image

右键选中【FNAGameTest】【在文件资源管理器中打开文件夹】

image

打开之前的【FNA-Template-master】文件夹,找到【build】目录将它复制到解决方案所在目录

image

image

选中解决方案,点击右键【添加】【新建项目】

image

【Visual C#】【MonoGame】【FNA Game Project】,输入名称【FNAGameTest】【确定】

image

 

项目虽然建立好了,但还有一个问题,其中没有引用FNA。

image

只需要引用之前【FNA-Template-master】目录生成的FNA.dll即可或引用FNA项目

image

image

引用以后,在调试时,还会出现错误。你需要将fnalibs文件夹中的x64和x86两个文件夹拷贝到项目的bin目录的Debug文件夹中。如果想在mac上运行则拷贝osx,linux上运行拷贝lib64

image

点击【启动】,这时候才算正在完成image