You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UE5.1.1调用&ACharacter::Jump时随机崩溃求助

UE 5.1.1 调用&ACharacter::Jump时随机崩溃问题解决

问题概述

使用Windows平台源码编译的UE 5.1.1版本,基于第三人称模板项目,未修改默认CharacterMovementComponent及跳跃逻辑,但调用&ACharacter::Jump时引擎会随机崩溃,且近期崩溃频率上升。崩溃核心为窄化转换导致的数据丢失断言失败,触发点在虚拟阴影图(Virtual Shadow Map)的渲染线程逻辑中。

崩溃日志

LoginId:508fe6f24e82612fb333a486f622ee7a
EpicAccountId:393905ce12c4434183c7408cb87f2890

Assertion failed: IntFitsIn<OutType>(In) [File:C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Core\Public\Templates\UnrealTemplate.h] [Line: 183] Loss of data caused by narrowing conversion

UnrealEditor_Renderer!FVirtualShadowMapClipmap::FVirtualShadowMapClipmap() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Renderer\Private\VirtualShadowMaps\VirtualShadowMapClipmap.cpp:173]
UnrealEditor_Renderer!FSceneRenderer::AddViewDependentWholeSceneShadowsForView() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Renderer\Private\ShadowSetup.cpp:4895]
UnrealEditor_Renderer!FSceneRenderer::BeginInitDynamicShadows() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Renderer\Private\ShadowSetup.cpp:5767]
UnrealEditor_Renderer!FDeferredShadingSceneRenderer::InitViews() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Renderer\Private\SceneVisibility.cpp:5195]
UnrealEditor_Renderer!FDeferredShadingSceneRenderer::Render() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Renderer\Private\DeferredShadingRenderer.cpp:2374]
UnrealEditor_Renderer!RenderViewFamilies_RenderThread() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Renderer\Private\SceneRendering.cpp:4390]
UnrealEditor_Renderer!<lambda_d825e7d5a738e0bb6b7e834ee381bd9e>::operator()() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Renderer\Private\SceneRendering.cpp:4668]
UnrealEditor_Renderer!TEnqueueUniqueRenderCommandType<`FRendererModule::BeginRenderingViewFamilies'::`87'::FDrawSceneCommandName,<lambda_d825e7d5a738e0bb6b7e834ee381bd9e> >::DoTask() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\RenderCore\Public\RenderingThread.h:206]
UnrealEditor_Renderer!TGraphTask<TEnqueueUniqueRenderCommandType<`FRendererModule::BeginRenderingViewFamilies'::`87'::FDrawSceneCommandName,<lambda_d825e7d5a738e0bb6b7e834ee381bd9e> > >::ExecuteTask() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:1348]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksNamedThread() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:760]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:649]
UnrealEditor_RenderCore!RenderingThreadMain() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:415]
UnrealEditor_RenderCore!FRenderingThread::Run() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:541]
UnrealEditor_Core!FRunnableThreadWin::Run() [C:\Users\nikgi\Documents\GitHub Desktop\UnrealEngine\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:149]

原因分析

崩溃并非跳跃逻辑本身问题,而是跳跃触发角色位置/视角变化后,渲染线程在更新**虚拟阴影图(Virtual Shadow Map)**时,出现了整数类型窄化转换(如大整数类型转小整数类型)导致的数据丢失,触发了引擎的断言检查。这是UE 5.1.1版本中虚拟阴影图模块的已知渲染线程bug。

解决方案

1. 临时规避(快速解决)

在项目设置中禁用虚拟阴影图:

  • 打开编辑 > 项目设置 > 渲染 > 阴影
  • 找到虚拟阴影图选项,取消勾选启用
  • 改用传统阴影(如接触阴影、软阴影),可立即消除崩溃

2. 源码修复(针对自定义编译引擎)

找到引擎源码路径下的Engine/Source/Runtime/Renderer/Private/VirtualShadowMaps/VirtualShadowMapClipmap.cpp第173行,检查触发断言的类型转换代码:

  • 原代码可能存在类似int32 SomeValue = static_cast<int32>(LargeIntValue);的窄化转换
  • 修改为安全转换逻辑,比如添加范围检查:
    int64 LargeIntValue = ...;
    check(IntFitsIn<int32>(LargeIntValue)); // 保留断言但提前验证
    int32 SomeValue = static_cast<int32>(LargeIntValue);
    
    或者根据实际场景调整类型匹配(如将目标类型改为int64),避免数据丢失

3. 长期根治

将引擎升级到UE 5.1.2或更高版本,官方已在后续版本中修复了该虚拟阴影图模块的断言bug。

内容的提问来源于stack exchange,提问作者Nikola Gigić

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:15:09