为 UWP 编译

需求

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

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

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

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

注解

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

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

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

参见

有关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,以便将它们复制到应用程序中.

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

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