diff --git a/03-UnrealEngine/Gameplay/GAS/其他社区文章.md b/03-UnrealEngine/Gameplay/GAS/其他社区文章.md new file mode 100644 index 0000000..1adccb8 --- /dev/null +++ b/03-UnrealEngine/Gameplay/GAS/其他社区文章.md @@ -0,0 +1,8 @@ +--- +title: Untitled +date: 2025-07-25 15:39:41 +excerpt: +tags: +rating: ⭐ +--- +- UE4/UE5 GAS共享冷却插件(SharedCoolingAbility) https://zhuanlan.zhihu.com/p/32216887423 \ No newline at end of file diff --git a/03-UnrealEngine/Gameplay/Lyra/UE5 Lyra学习笔记(7)—CommonLoadingScreen.md b/03-UnrealEngine/Gameplay/Lyra/UE5 Lyra学习笔记(7)—CommonLoadingScreen.md new file mode 100644 index 0000000..141da15 --- /dev/null +++ b/03-UnrealEngine/Gameplay/Lyra/UE5 Lyra学习笔记(7)—CommonLoadingScreen.md @@ -0,0 +1,35 @@ +--- +title: Untitled +date: 2025-07-25 14:49:41 +excerpt: +tags: +rating: ⭐ +--- +# 相关CVar参数 +- CommonLoadingScreen.AlwaysShow:总是显示 +- CommonLoadingScreen.LogLoadingScreenReasonEveryFrame +- CommonLoadingScreen.HoldLoadingScreenAdditionalSecs:载入完成后的等待时间。 + +# 相关逻辑 +- ***ULoadingScreenManager***:核心逻辑。 +- UCommonLoadingScreenSettings:各种设置参数。 +- ULoadingProcessTask:继承ILoadingProcessInterface接口,只需覆盖ShouldShowLoadingScreen()。 +- FCommonStartupLoadingScreenModule:StartupModule()、FPreLoadScreenManager::OnPreLoadScreenManagerCleanUp()绑定OnPreLoadScreenManagerCleanUp()。 +- SCommonPreLoadingScreenWidget:LoadingScreen Slate控件。 + +## ULoadingScreenManager(UGameInstanceSubsystem) +- Initialize():绑定PreLoadMapWithContext与PostLoadMapWithWorld委托。 +- Deinitialize():移除BlockInput、移除Widget、移除委托、关闭Tickable。 +- ShouldCreateSubsystem():覆盖接口函数,对于非Server端都会加载LoadingScreen。 +- FTickableGameObject + - Tick():调用**ShouldCreateSubsystem()**,计算TimeUntilNextLogHeartbeatSeconds。 + - GetTickableTickType() + - IsTickable():如果GameInstance有效且拥有游戏窗口就可以进行Tick。 + - GetStatId():STATGROUP_Tickables + - GetTickableGameObjectWorld():GetGameInstance()->GetWorld(); +- RegisterLoadingProcessor():用于坐车任务,在ULoadingProcessTask::CreateLoadingScreenProcessTask()被调用。 +- UnregisterLoadingProcessor():用于卸载任务,在ULoadingProcessTask::Unregister()被调用。 +- **HandlePreLoadMap()**:修改bCurrentlyInLoadMap为true,之后调用UpdateLoadingScreen()。 +- **HandlePostLoadMap()**:修改bCurrentlyInLoadMap为false。 + +### FPreLoadScreenManager \ No newline at end of file