UE5 LyraStarterGame重启引擎后布局与部件消失问题求助
问题分析
这是Lyra框架下插件资源的延迟加载/依赖缺失问题,核心是重启引擎后,插件内的HUD相关资产(布局、部件、ActionSet)未被标记为预加载资源,导致引擎启动时未自动加载,仅编译时触发强制加载才会显示。
解决方案
调整插件加载优先级与依赖
- 打开插件的
.uplugin文件,将LoadingPhase设为PreLoadingScreen,确保插件在引擎启动早期加载:"LoadingPhase": "PreLoadingScreen" - 在插件的
Build.cs中添加Lyra核心模块依赖,保证加载顺序正确:PrivateDependencyModuleNames.AddRange(new string[] { "LyraGame", "LyraUI", "LyraExperience", "Slate", "SlateCore" });
- 打开插件的
修正Primary Asset注册配置
- 进入
Project Settings > Asset Manager,找到LyraExperienceDefinition的Primary Asset设置:- 确认插件内Experience文件夹路径已添加到
Directories to Scan - 将
Cook Rule设为Always Cook,避免重启时资源被忽略
- 确认插件内Experience文件夹路径已添加到
- 选中
LAS_MyGame_StandardHUD资产,在细节面板的Asset Registry区域,确保Primary Asset Type设为LyraExperienceDefinition,Primary Asset Id自动生成即可
- 进入
强制预加载HUD资源
在自定义Experience类(继承自ULyraExperienceDefinition)的PostLoad函数中,手动加载HUD布局与部件:void ULAS_MyGame_StandardHUD::PostLoad() { Super::PostLoad(); // 加载HUD布局类 if (HUDLayoutClass) { FSoftObjectPath LayoutPath = HUDLayoutClass->GetPathName(); LayoutPath.TryLoad(); } // 批量加载HUD部件类 for (TSubclassOf<ULyraHUDWidgetBase> WidgetClass : HUDWidgetClasses) { if (WidgetClass) { FSoftObjectPath WidgetPath = WidgetClass->GetPathName(); WidgetPath.TryLoad(); } } }检查ActionSet引用与初始化
确保LAS_MyGame_StandardHUD中的ActionSet未使用软引用(或在Experience加载时强制解析软引用),同时验证Lyra的HUD初始化流程是否正确绑定了自定义ActionSet。清理引擎缓存
删除项目目录下的Intermediate、Saved文件夹,重启引擎后重新生成项目文件并全量编译,清除旧缓存干扰。
内容的提问来源于stack exchange,提问作者김진우
相关产品推荐
相关产品推荐

