1.7 KiB
1.7 KiB
title, date, excerpt, tags, rating
title | date | excerpt | tags | rating |
---|---|---|---|---|
Untitled | 2025-07-25 14:49:41 | ⭐ |
相关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。