UE5.5 在 Windows 中构建 CARLA-0.10.0

UE5.5 在 Windows 中构建 CARLA-0.10.0

1. 确保以下软件已正确安装:

Windows 11
Visual Studio 2022(带 C++ 组件)
Python 3.9(推荐,不要使用 3.10 或 3.12
Unreal Engine 5.5 [5.3或者5.4 会因为VS2022的底层类名问题出错]
Git
CMake 3.22+
Ninja
Windows 11 SDK

2. 下载资源

从https://github.com/carla-simulator/carla/releases 下载Asset 源码(直接下载是预编译版本 无法使用UE editor)

在系统中设置环境变量:CARLA_UNREAL_ENGINE_PATH “F:\EPIC\UE_5.5”

CarlaSetup.bat 双击就行 会下载一些content资源和需要的包 如果你电脑是比较干净的,那更好了,这个bat自动把UE5.5包括其他的东西给你下载完。

3. 进入 CARLA 目录

创建 Python 3.9 虚拟环境 python -m venv venv39
激活 venv39\Scripts\activate.bat
检查 python --version
安装依赖 pip install --upgrade pip setuptools wheel build 或者 requirement.txt
【没有pip的话 执行python -m ensurepip --default-pip;pip install setuptools wheel build numpy 】

ps:删除之前的build目录 rmdir /S /Q Build【如果遇到失败】

4. 运行 CMake 配置

在下载的Carla0.10.0中打开 VS 2022 的 x64 Native Tools 命令提示符输入

cmake -G Ninja -S . -B Build ^
  -DCMAKE_BUILD_TYPE=Release ^
  -DBUILD_CARLA_UNREAL=ON ^
  -DCARLA_UNREAL_ENGINE_PATH=%CARLA_UNREAL_ENGINE_PATH% ^
  -DCMAKE_Fortran_COMPILER= ^
  -DPython3_EXECUTABLE="F:/Carla/carla-0.10.0/venv39/Scripts/python.exe" ^
  -DCMAKE_C_FLAGS="/utf-8" ^
  -DCMAKE_CXX_FLAGS="/utf-8" 

^
  -DCMAKE_C_COMPILER="D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64\cl.exe" ^
  -DCMAKE_CXX_COMPILER="D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64\cl.exe"

运行编译

cmake --build Build

这里还是可能遇到问题,尽量把所有进程都关闭 留给Cmake

编译 Python API

cmake --build Build --target carla-python-api-install

python -c "import carla; print('CARLA version:', carla.__version__)"

启动 Unreal Editor

cmake --build Build --target launch

这里遇到问题, Visual Studio 2022 版本过低, 通过Visual Studio Installer 更新 Visual Studio 2022,然后检查 & 安装 MSVC 14.34+【点击 “修改”(Modify),进入 “单个组件” 选项卡,在 “编译工具”(Compilers, build tools)里,找到MSVC v143 - VS 2022 C++ x64/x86 build tools卸载MSVC 2019 和 2017 解决

新问题,启动 Unreal Editor这一步检测到:

std::atomic_store_expression
std::atomic_store_explicit 和 std::atomic_load_explicit 已被 C++20 废弃

所以如果我想修复错误,就需要在AtomicSharedPtr.h中修改为store 和 load,但在更改了上一步后,cmake --build Build 又给我带来了问题,因为它使用的是旧版本的 store 和 load。

解决问题,不能去修改AtomicSharedPtr.h,会产生各种奇葩错误。最后研究Log.txt发现是UE5.5 移除了 ParallelLineTraceSingleByChannel(),改用 LineTraceSingleByChannel() 所以我需要修改

…\carla-0.10.0\Unreal\CarlaUnreal\Plugins\Carla\Source\Carla\Sensor 中的Radar.cpp和RayCastSemanticLidar.cpp,具体:

修改 Radar.cpp

找到 Radar.cppSendLineTraces() 函数:

const bool Hitted = GetWorld()->ParallelLineTraceSingleByChannel(
    OutHit,
    RadarLocation,
    EndLocation,
    ECC_GameTraceChannel2,
    TraceParams,
    FCollisionResponseParams::DefaultResponseParam
);

// 修改为

const bool Hitted = GetWorld()->LineTraceSingleByChannel(
    OutHit,
    RadarLocation,
    EndLocation,
    ECC_GameTraceChannel2,
    TraceParams,
    FCollisionResponseParams::DefaultResponseParam
);

找到 RayCastSemanticLidar.cppShootLaser() 函数:

GetWorld()->ParallelLineTraceSingleByChannel(
    HitInfo,
    LidarBodyLoc,
    EndTrace,
    ECC_GameTraceChannel2,
    TraceParams,
    FCollisionResponseParams::DefaultResponseParam
);

// 修改为

GetWorld()->LineTraceSingleByChannel(
    HitInfo,
    LidarBodyLoc,
    EndTrace,
    ECC_GameTraceChannel2,
    TraceParams,
    FCollisionResponseParams::DefaultResponseParam
);

终于成功了,都是泪,官方文档坑太多了…
在这里插入图片描述

<think>好的,用户问的是“灵动岛是什么”,我需要先弄清楚这个术语的具体含义。首先,灵动岛听起来像是一个科技产品或功能的名字,可能跟智能手机有关。我记得苹果在iPhone 14 Pro系列中推出了一个叫做Dynamic Island的功能,中文翻译可能就是“灵动岛”。我需要确认这一点。 接下来,我应该解释灵动岛的基本概念。它位于屏幕顶部的药丸形区域,原本是为了容纳前置摄像头和Face ID传感器而设计的。苹果通过软件将其转化为一个交互式的区域,显示实时活动和通知。这和之前的刘海屏设计不同,更具互动性。 然后需要详细说明它的主要功能,比如显示系统提醒(来电、Face ID验证、充电状态等),实时活动(音乐播放、计时器、导航等),以及交互操作(长按、轻触、滑动等手势)。这些功能让用户无需离开当前应用就能快速访问信息,提升使用效率。 还要提到它的设计理念,即通过软硬件结合,将原本的硬件缺陷转化为实用功能,体现了苹果的创新思维。同时,灵动岛的UI设计会根据内容变化形状和大小,保持视觉上的统一。 最后,可能补充一下适用机型,主要是iPhone 14 Pro和Pro Max,以及后续的iPhone 15系列是否支持。另外,可以提及用户和市场的反响,比如是否受到好评,有没有什么缺点,比如适配问题或屏幕空间占用等。 检查是否有遗漏的信息,比如技术细节或与其他品牌的类似功能对比,但用户可能只需要基础介绍,所以保持简洁。确保使用中文,结构清晰,分点说明,同时遵循系统级指令中的格式要求,数学公式部分可能用不上,但要注意其他格式规则。</think>### 灵动岛是什么? **灵动岛**(Dynamic Island)是苹果公司为iPhone 14 Pro及后续高端机型设计的一项交互式界面功能,旨在将屏幕顶部的“药丸形”挖孔区域(用于前置摄像头和Face ID传感器)转化为一个动态显示与交互的核心区域。它通过软硬件结合的方式,将原本静态的硬件缺陷转化为动态的信息中心。 --- ### 核心功能与特点 1. **实时活动显示** 灵动岛可以动态展示当前后台任务的实时状态,例如: - 音乐播放(显示专辑封面、播放进度) - 通话计时或录音状态 - 导航指示、外卖配送进度 - 充电状态或设备连接提示 $$ \text{例:显示“正在播放:歌曲名 - 艺术家”} $$ 2. **交互式操作** 用户可以通过点击、长按或滑动直接与灵动岛互动,无需跳转到对应App: - 轻触展开详细信息(如查看完整歌词) - 长按快速控制功能(如暂停音乐) - 滑动关闭任务 3. **系统通知整合** 将传统弹窗通知转化为更柔和的“气泡”样式,从灵动岛展开,减少对屏幕内容的遮挡。 4. **自适应UI设计** 灵动岛的形态会随内容动态变化,例如: - 来电时扩展为长条形显示通话人信息 - Face ID验证时短暂缩小为圆点 --- ### 技术实现原理 - **软硬件协同**:通过OLED屏幕的局部亮度和色彩控制,隐藏挖孔区域的硬件边界。 - **动画过渡**:流畅的形变动画让视觉焦点集中在信息本身,而非硬件形态。 --- ### 适配机型 目前支持灵动岛的机型包括: - iPhone 14 Pro / Pro Max - iPhone 15全系列 --- ### 评价与意义 - **创新性**:将硬件限制转化为功能亮点,体现了“缺陷设计”的巧思。 - **争议点**:部分用户认为其占用屏幕空间,且第三方App适配需时间完善。 - **行业影响**:推动了安卓厂商对类似交互设计的探索(如“灵动胶囊”)。 如果需要进一步了解具体操作或场景示例,可以随时提问!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值