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 (默认)分支。将其保存在没有空格的路径中以避免出现问题。

注解

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

不过,作为一个临时的变通办法,仍然可以通过提交`c61d048 <https://github.com/microsoft/angle/tree/c61d0488abd9663e0d4d2450db7345baa2c0dfb6>`__来下载旧版的源代码。

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

参见

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

开始编译

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

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

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

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

C:\godot>scons platform=uwp

创建UWP导出模板

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

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

C:\godot>scons platform=uwp target=release_debug
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:

uwp_x86_debug.zip
uwp_x86_release.zip
uwp_x64_debug.zip
uwp_x64_release.zip
uwp_arm_debug.zip
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.