预演系统-Pak资产挂载流程记录
这里记录程序线执行流程 一、pak资产挂载流程 目前有两个挂载入口: 0.1加载本地pak资产 /Game/Blueprints/UI/CoreUI/WPT_AssetLibraryMenu.WPT_AssetLibraryMenu蓝图中ConstructSkuClass函数调用void UCPT_UnitSkuButton::RequestMountPak(const FString& LocalPakPath)函数进行pak挂载请求; 0.2下载云端资产 void FCPT_AssetDownloadService::OnDownloadFinished函数中调用void UCPT_UnitSkuButton::RequestMountPak(const FString& LocalPakPath)函数进行pak挂载请求。 挂载委托关系梳理: UCPT_UnitSkuButton类 有代理:OnMountPakRequested(声明:DECLARE_DELEGATE_TwoParams(FOnMountPakRequested, UCPT_UnitSkuButton*, const FString&);) 有函数: void UCPT_UnitSkuButton::RequestMountPak(const FString& LocalPakPath) { OnMountPakRequested.ExecuteIfBound(this, LocalPakPath); } UCPT_AssetLibraryMenu类 有代理:DE_MountPakRequested(声明DECLARE_DELEGATE_TwoParams(FOnPakMountRequested, UCPT_UnitSkuButton*, const FString&)) 有函数: void UCPT_AssetLibraryMenu::RegisterSkuButton(UCPT_UnitSkuButton* Button) { Button->OnMountPakRequested.BindLambda([this](UCPT_UnitSkuButton* Btn, const FString& PakPath) { DE_MountPakRequested.ExecuteIfBound(Btn, PakPath); }); } UCPT_MainUI类 在函数void UCPT_MainUI::LoadLocalAssets()中进行了绑定: LeftMenuBar->AssetLibraryMenu->DE_MountPakRequested.BindUObject(this, &UCPT_MainUI::HandlePakMountRequested); 流程如下: 1、首先会在函数void UCPT_MainUI::LoadLocalAssets()中绑定DE_MountPakRequested代理。 2、然后在构建资产缩略图按钮时会调用RegisterSkuButton注册代理。 请求挂载:RequestMountPak -> 由于在(2)中绑定了lambda函数,所以会执行DE_MountPakRequested -> 由于在(1)中绑定代理,所以最终执行:HandlePakMountRequested。 流程图/拓扑图 整体挂载流程拓扑图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 ┌─────────────────────────────────────────────────────────────────────────────┐ │ Pak 资产挂载流程总览 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ 入口A:启动时加载本地pak 入口B:下载云端资产 │ │ ┌─────────────────────┐ ┌──────────────────────┐ │ │ │ UCPT_MainUI:: │ │ UCPT_UnitSkuButton:: │ │ │ │ LoadLocalAssets() │ │ RequestDownload() │ │ │ └─────────┬───────────┘ └──────────┬───────────┘ │ │ │ │ │ │ │ 读取本地清单 入队下载 │ │ │ │ manifest_cache....