常见问题#


Windows 构建#


Linux 构建#


其他#


Windows 构建#

如何强制 Unreal 使用 Visual Studio 2019?#

如果默认的 update_from_git.bat 文件生成 VS 2017 项目,那么您可能需要手动运行 C:\Program Files\Epic Games\UE_4.25\Engine\Binaries\DotNET\UnrealBuildTool.exe 工具,使用命令行选项 -projectfiles -project=<your.uproject> -game -rocket -progress -2019

如果您正在从 4.18 升级到 4.25,您可能还需要在 *.Target.cs*Editor.Target.cs 构建文件中添加 BuildSettingsVersion.V2,如下所示

   public AirSimNHTestTarget(TargetInfo Target) : base(Target)
   {
       Type = TargetType.Game;
       DefaultBuildSettings = BuildSettingsVersion.V2;
       ExtraModuleNames.AddRange(new string[] { "AirSimNHTest" });
   }

您可能还需要编辑此文件

"%APPDATA%\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml

并添加此编译器版本设置

<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
  <WindowsPlatform>
    <Compiler>VisualStudio2019</Compiler>
  </WindowsPlatform>
</Configuration>
我收到错误:“where”不是内部或外部命令#

您必须将 C:\WINDOWS\SYSTEM32 添加到您的 PATH 环境变量中。

我收到错误 <MyProject> 无法编译。请尝试手动从源代码重新构建#

当存在编译错误时会发生这种情况。日志存储在 <My-Project>\Saved\Logs 中,可用于找出问题。

一个常见问题可能是 Visual Studio 版本冲突,AirSim 使用 VS 2019,而 UE 使用 VS 2017,这可以通过在日志文件中搜索 2017 来发现。在这种情况下,请参阅上面的答案。

如果您修改了 AirSim 插件文件,则可以右键单击 .uproject 文件,选择 生成 Visual Studio 解决方案文件,然后在 VS 中打开 .sln 文件以修复错误并重新构建。

运行 build.cmd 时,我收到 error C100:编译器发生内部错误#

我们注意到 VS 版本 15.9.0 出现了这种情况,并在 AirSim 代码中签入了一个变通方法。如果您有此 VS 版本,请务必拉取最新的 AirSim 代码。

我收到错误“'corecrt.h':没有这样的文件或目录”或“未找到 Windows SDK 版本 8.1”#

您很可能没有随 Visual Studio 安装 Windows SDK

如何在 AirSim 中使用 PX4 固件?#

默认情况下,AirSim 使用其内置固件,称为 simple_flight。如果您只想使用它,则无需额外设置。如果您想切换到使用 PX4,请参阅 此指南

我在 Visual Studio 中进行了更改,但没有效果#

有时,如果您只更改头文件,Unreal + VS 构建系统不会重新编译。为了确保重新编译,请将某些基于 Unreal 的 cpp 文件(例如 AirSimGameMode.cpp)“弄脏”。

运行多个版本的 VS 可能会在编译 UE 项目时导致问题。可能出现的一个问题是 UE 会尝试使用旧版本的 VS 进行编译,这可能有效,也可能无效。Unreal 中有两个设置,一个用于引擎,一个用于项目,用于调整要使用的 VS 版本。

  1. 编辑 -> 编辑器首选项 -> 通用 -> 源代码 -> 源代码编辑器
  2. 编辑 -> 项目设置 -> 平台 -> Windows -> 工具链 -> 编译器版本

在某些情况下,这些设置仍然无法达到预期结果,并且可能会产生如下错误:LINK:致命错误 LNK1181:无法打开输入文件“ws2_32.lib”

为了解决此类问题,可以应用以下过程

  1. 使用 VisualStudioUninstaller 卸载所有旧版本的 VS
  2. 修复/安装 VS 2019
  3. 重启机器并安装 Epic 启动器和所需版本的引擎

Linux 构建#

我收到错误 <MyProject> 无法编译。请尝试手动从源代码重新构建#

这可能是由于编译错误或您的 gch 文件已过时造成的。查看您的控制台窗口。您是否看到以下内容?

致命错误:文件 '/usr/include/linux/version.h''/usr/include/linux/version.h' 自预编译头文件以来已被修改

如果是这种情况,请查找消息后出现的 *.gch 文件,删除它们,然后重试。这是 Unreal Engine 论坛上的 相关线程

如果您在控制台中看到其他编译错误,请打开这些源文件,看看是否是您所做的更改造成的。如果不是,请在 GitHub 上报告为问题。

Unreal 崩溃了!我怎么知道出了什么问题?#

转到 MyUnrealProject/Saved/Crashes 文件夹,并在其子目录中搜索文件 MyProject.log。在此文件末尾,您将看到堆栈跟踪和消息。您还可以查看 Diagnostics.txt 文件。

如何在 Linux 上使用 IDE?#

您可以使用 Qt Creator 或 CodeLite。Qt Creator 的说明可在此处 找到

我可以在 Windows 机器上为 Linux 交叉编译吗?#

是的,可以,但我们尚未测试。您可以在 此处 找到说明。

AirSim 使用什么编译器和 stdlib?#

我们使用与 Unreal Engine 相同的编译器,Clang 8,以及 stdlib,libc++。AirSim 的 setup.sh 将自动下载它们。

AirSim 构建使用哪个版本的 CMake?#

3.10.0 或更高版本。这在 Ubuntu 16.04 中不是默认值,因此 setup.sh 会为您安装。您可以使用 cmake --version 检查您的 CMake 版本。如果您有旧版本,请按照 这些说明 操作或参阅 CMake 网站

我可以在 BashOnWindows 中编译 AirSim 吗?#

是的,但是,您无法从 BashOnWindows 运行 Unreal。因此,这对于检查 Linux 编译很有用,但对于端到端运行则不然。请参阅 BashOnWindows 安装指南。请确保拥有最新版本(Windows 10 Creators Edition),因为以前的版本存在各种问题。另外,不要从 Visual Studio Command Prompt 调用 bash,否则 CMake 可能会找到 VC++ 并尝试使用它!

在哪里可以找到更多关于在 Linux 上运行 Unreal 的信息?#

从这里开始:Unreal on Linux Building Unreal on Linux Unreal Linux Support Unreal Cross Compilation


其他#

打包包含 AirSim 插件的二进制文件#

为了将自定义环境与 AirSim 插件一起打包,需要进行一些项目设置,以确保所有 AirSim 所需的资产都包含在包中。在 编辑 -> 项目设置... -> 项目 -> 打包 下,请确保以下设置已正确配置

  • 要包含在打包构建中的地图列表:确保存在一个条目用于 /AirSim/AirSimAssets
  • 要烹饪的额外资产目录:确保存在一个条目用于 /AirSim/HUDAssets