为通用 Windows 平台编译

参见

这个页面描述的是如何从源码编译 UWP 导出模板二进制。如果你想要找的是导出项目到 UWP,请阅读 为通用 Windows 平台导出

需求

  • SCons 3.0+ (详见 为 Windows 平台编译 ).

  • Visual Studio 2017或更高版本. 关于安装的注意事项和各种提示, 请参见 为 Windows 平台编译.

  • Windows 10 SDK(可在Visual Studio安装中选择).

  • ANGLE source. 使用 ms_master (默认)分支. 将其保存在没有空格的路径中以避免出现问题.

备注

微软的ANGLE repo已经停止, ms_master 分支已经被清除.

不过, 作为一个临时的变通办法, 仍然可以通过提交 c61d048 来下载旧版的源代码.

本页最终将在未来更新, 以反映新的构建说明.

参见

要获取编译所需的 Godot 源码,请参阅 获取源代码

有关 Godot 的 SCons 用法的一般概述,请参阅 构建系统介绍

编译

你需要为要构建的目标体系结构打开正确的Visual Studio提示符. 检查 为 Windows 平台编译 以查看这些提示是如何工作的.

UWP 有三种目标体系结构:x86(32 位)、x64(64 位)和 ARM(32 位)。对于后者,你可以使用 x86_armamd64_arm 作为参数运行 vcvarsall.bat 来设置环境。

ANGLE_SRC_PATH 设置为你下载ANGLE源代码的目录. 构建过程还将构建ANGLE以生成所选体系结构所需的DLL.

设置完成后,与其他平台类似地运行 SCons 命令:

  1. C:\godot>scons platform=uwp

创建 UWP 导出模板

要使用编辑器导出, 你需要正确构建打包模板. 你需要具有 debugrelease 模板的所有三种体系结构才能导出.

为一种体系结构打开命令提示符,然后运行 SCons 两次(每个目标一次):

  1. C:\godot>scons platform=uwp target=release_debug
  2. C:\godot>scons platform=uwp target=release

为其他架构重复上述过程。

最后你的 bin 文件夹将有 .exe 二进制文件,其名称类似于 godot.uwp.opt.debug.32.x86.exe(包含每个目标/架构的变体)。

将其中一个复制到Godot源文件夹中的 misc/dist/uwp_template, 并将二进制文件重命名为 godot.uwp.exe . 从在 winrt/10/src/Release_%arch% ( %arch% 可以是 Win32, x64ARM)下的ANGLE源代码, 获取 libEGL.dlllibGLESv2.dll, 将它们与可执行文件放在一起.

uwp_template 文件夹中的文件添加到 ZIP 中。根据模板的目标/体系结构重命名生成的 Zip:

  1. uwp_x86_debug.zip
  2. uwp_x86_release.zip
  3. uwp_x64_debug.zip
  4. uwp_x64_release.zip
  5. uwp_arm_debug.zip
  6. uwp_arm_release.zip

将这些模板移动到Godot设置中的路径 [versionstring]\templates 文件夹, 其中 versionstring 是你编译导出模板针对的Godot版本——例如 3.0.alpha 针对Godot 3的alpha版本. 如果你不想替换模板, 可以在导出窗口中设置 自定义包 属性.

使用 Visual Studio 运行 UWP 应用程序

如果要调试UWP端口或只是在没有打包和签名的情况下运行应用程序, 可以使用Visual Studio部署和启动它们. 如果你在Windows Phone或Xbox One等设备上进行测试, 这可能是最简单的方法.

在ANGLE源文件夹中, 打开 templates 并双击 install.bat 脚本文件. 这将为ANGLE应用程序安装Visual Studio项目模板.

如果还没有构建Godot, 请从ANGLE源打开 winrt/10/src/angle.sln 解决方案, 并将其构建到 Release/Win32 目标. 如果你计划在设备上运行, 则可能还需要为ARM构建它. 如果你对命令行感到满意, 也可以使用MSBuild.

使用”App for OpenGL ES(Windows Universal)”项目模板创建一个新的Windows应用程序项目, 该模板位于 Visual C++/Windows/Universal 类别下.

这是一个已经设置了ANGLE依赖项的基础项目. 但是, 默认情况下, 它会选择通常性能较差的DLL的调试版本. 因此, 在 “二进制” 过滤器中, 单击其中的每个DLL并在 “属性” 窗口中, 将相对路径从 Debug_Win32 更改为 Release_Win32 (或针对设备的 Release_ARM).

在相同的 “二进制” 过滤器中, 选择 “添加>现有项” 并指向你拥有的针对UWP的Godot可执行文件. 在 “属性” 窗口中, 将 “内容” 设置为 True, 以使它包含在项目中.

右键单击 Package.appxmanifest 文件并选择”打开使用……> XML(Text)编辑器”. 在 Package/Applications/Application 元素中, 将 $targetnametoken$.exe 中的 Executable 属性替换为 godot.uwp.exe (或者调用你的Godot可执行文件, 无论它是什么). 同时将 EntryPoint 属性更改为 GodotUWP.App . 这将确保在应用程序启动时正确调用Godot可执行文件.

在Visual Studio项目文件夹中创建一个名为 game 的文件夹(不是 过滤器), 你可以在其中放置 data.pck 文件或Godot项目文件. 之后, 请确保使用 “添加>现有项目” 命令将其全部包含在内, 并将其 “内容” 属性设置为 True, 以便将它们复制到应用程序中.

为了简化工作流程, 你可以打开 “解决方案属性 “, 然后在” 配置 “部分中取消选中应用程序的” 构建 “选项. 你仍然必须至少构建一次以生成一些所需的文件, 你可以通过右键单击” 解决方案资源管理器”中的项目(不是 解决方案)并选择 “构建” 来实现.

现在你可以直接运行该项目, 你的应用程序应该会打开. 你也可以使用 “Debug” 菜单中的 “Start Without Debugging” 选项(或按 Ctrl + F5 ), 以使其更快启动.