为 UWP 编译

需求

  • SCons 3.0+ (see 为Windows平台编译 for more details).
  • Visual Studio 2017 or later. See 为Windows平台编译 about the caveats of installing it and the various prompts.
  • Windows 10 SDK(可在Visual Studio安装中选择)。
  • ANGLE source。使用 ms_master (默认)分支。将其保存在没有空格的路径中以避免出现问题。

注解

The ANGLE repo by Microsoft has been discontinued and the ms_master branch has been cleared out.

As a temporary workaround however, it is still possible to download an older state of the source code via commit c61d048.

This page will eventually be updated in the future to reflect the new build instructions.

参见

有关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% 可以是 Win32x64ARM)下的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,以便将它们复制到应用程序中。

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

Now you can just run the project and your app should open. You can also use the “Start Without Debugging” option from the “Debug” menu (or press Ctrl + F5) to make it launch faster.