当前位置: 首页 > wzjs >正文

昆山做网站优化国内做seo最好的公司

昆山做网站优化,国内做seo最好的公司,广州网站整站优化,自动app优化目录 1 地图加载流程1.1 默认Experience的加载1.2 加载角色1.3 加载场景中的几个传送点 2 几个内建类的笔记2.1 UDataAsset2.2 UAssetManager 纯个人笔记,有错误欢迎指正,学习阶段基本看到不会的就写一写,最后有时间会梳理整体结构 先看完了官…

目录

  • 1 地图加载流程
    • 1.1 默认Experience的加载
    • 1.2 加载角色
    • 1.3 加载场景中的几个传送点
  • 2 几个内建类的笔记
    • 2.1 UDataAsset
    • 2.2 UAssetManager

纯个人笔记,有错误欢迎指正,学习阶段基本看到不会的就写一写,最后有时间会梳理整体结构

先看完了官方的演讲

1 地图加载流程

1.1 默认Experience的加载

  这里先不从GameInstance开始,中间的CommonUser等流程暂时不谈(有点多暂时不想看0w0),编辑器默认地图L_DefaultEditorOverview中没有重载游戏模式,所以用项目默认的B_LyraGameMode。
  ALyraGameMode::InitGame()

// Wait for the next frame to give time to initialize startup settings
GetWorld()->GetTimerManager().SetTimerForNextTick(this, &ThisClass::HandleMatchAssignmentIfNotExpectingOne);

可见逻辑转到了ALyraGameMode::HandleMatchAssignmentIfNotExpectingOne()
(这里走的默认分支)

void ALyraGameMode::HandleMatchAssignmentIfNotExpectingOne()
{...ExperienceId = FPrimaryAssetId(FPrimaryAssetType("LyraExperienceDefinition"), FName("B_LyraDefaultExperience"));ExperienceIdSource = TEXT("Default");...OnMatchAssignmentGiven(ExperienceId, ExperienceIdSource);
}

  之后的调用栈大概是

OnMatchAssignmentGiven(ExperienceId, ExperienceIdSource)->
void ULyraExperienceManagerComponent::SetCurrentExperience(ExperienceId)->
void ULyraExperienceManagerComponent::StartExperienceLoad()->
void ULyraExperienceManagerComponent::OnExperienceLoadComplete()

  过程大体是设置当前ExperienceId,异步加载Experience相关资源,调用加载完成的回调.
  OnExperienceLoadComplete()函数收集GameFeaturePluginURL,最终调用

UGameFeaturesSubsystem::Get().
LoadAndActivateGameFeaturePlugin(PluginURL,  
FGameFeaturePluginLoadComplete::CreateUObject(this, 
&ThisClass::OnGameFeaturePluginLoadComplete));

  触发默认Feature的Action

这里记录一下几个Action函数的调用顺序, 防止我忘了
在这个函数中:
void ULyraExperienceManagerComponent::OnExperienceFullLoadCompleted()

ActivateListOfActions的定义

	auto ActivateListOfActions = [&Context](const TArray<UGameFeatureAction*>& ActionList){for (UGameFeatureAction* Action : ActionList){if (Action != nullptr){//@TODO: The fact that these don't take a world are potentially problematic in client-server PIE// The current behavior matches systems like gameplay tags where loading and registering apply to the entire process,// but actually applying the results to actors is restricted to a specific worldAction->OnGameFeatureRegistering();Action->OnGameFeatureLoading();Action->OnGameFeatureActivating(Context);}}};

逐一调用顺序
自己的Actions先调用,再遍历调用ActionSets

ActivateListOfActions(CurrentExperience->Actions);for (const TObjectPtr<ULyraExperienceActionSet>& ActionSet : CurrentExperience->ActionSets){if (ActionSet != nullptr){ActivateListOfActions(ActionSet->Actions);}}

三个多播顺序

	OnExperienceLoaded_HighPriority.Broadcast(CurrentExperience);OnExperienceLoaded_HighPriority.Clear();OnExperienceLoaded.Broadcast(CurrentExperience);OnExperienceLoaded.Clear();OnExperienceLoaded_LowPriority.Broadcast(CurrentExperience);OnExperienceLoaded_LowPriority.Clear();

1.2 加载角色

B_LyraDefaultExperience中:
在这里插入图片描述
SimplePawnData:
在这里插入图片描述
可以发现通过这个就找到了创建的金属Pawn,而不是GameMode中的角色类(是其蓝图子类)
在这里插入图片描述
但是为什么这里的配置能够生效呢?
因为ALyraGameMode重写了这个实现:

APawn* ALyraGameMode::SpawnDefaultPawnAtTransform_Implementation(AController* NewPlayer, const FTransform& SpawnTransform){
...
if (UClass* PawnClass = GetDefaultPawnClassForController(NewPlayer)){if (APawn* SpawnedPawn = GetWorld()->SpawnActor<APawn>(PawnClass, SpawnTransform, SpawnInfo))
...
}UClass* ALyraGameMode::GetDefaultPawnClassForController_Implementation(AController* InController)
{if (const ULyraPawnData* PawnData = GetPawnDataForController(InController)){if (PawnData->PawnClass){return PawnData->PawnClass;}}
...
}const ULyraPawnData* ALyraGameMode::GetPawnDataForController(const AController* InController) const
{
...
return Experience->DefaultPawnData;
...
}

1.3 加载场景中的几个传送点

由场景中这个Actor控制:
在这里插入图片描述
生成逻辑没什么该注意的,注意生成时传入了LyraUserfacingExperienceDefinition类型的变量,Widget信息都是根据这个配置的。
主要看加载地图:
在这里插入图片描述
可见信息都在LyraUserfacingExperienceDefinition中,例如这个下边这个,可以看到
要去的地图信息都有。
在这里插入图片描述

2 几个内建类的笔记

2.1 UDataAsset

刚拿到项目无从下手,就去看了启动默认地图L_LyraFrontEnd,没有重载GameMode,即用的项目设置的B_LyraGameMode,暂时先不看GameMode,然后基于演讲去看了DefaultGameplayExperience,一路看过去

B_LyraFrontEnd_Experience->
ULyraExperienceDefinition->
UPrimaryDataAsset->
UDataAsset->
UObject

这时候我发现我对DataAsset没什么了解,只好先去学习一下:

UCLASS(abstract, MinimalAPI, Meta = (LoadBehavior = "LazyOnDemand"))
class UDataAsset : public UObject

abstract:

在这里插入图片描述
MinimalAPI没太看懂,大概是优化编译相关的:
在这里插入图片描述
LoadBehavior
UPrimaryDataAsset:
UE5–PrimaryDataAsset资产包更新UpdateAssetBundleData源码分析
看完这几篇后我的理解这个类就是数据资产。


2.2 UAssetManager

暂时停留在使用层理解。
UE5 AssetManager类使用详解


参考文章:
UE5 Lyra项目学习(零) 开篇&目录

http://www.dtcms.com/wzjs/187765.html

相关文章:

  • 网站制作公司杭州产品推广方案范例
  • 网站导航栏分析网络营销的目的是
  • 网站开发看什么书公司怎么推广网络营销
  • bbs网站设计安卓优化大师旧版本下载
  • 免费开店的平台有哪些重庆网站优化公司
  • wordpress设置了固定链接seo比较好的公司
  • 淮安专业做网站百度客服
  • 视频8首页制作代码杭州关键词优化平台
  • 网站建设买什么书搜索引擎推广的优势
  • 湖南企业建站系统平台好口碑关键词优化
  • vs2008做网站东莞seo黑帽培训
  • 能接做网站的活的网站昆明seo优化
  • 精准扶贫建设网站的目的精美软文句子
  • 网页qq登录网站同城引流用什么软件
  • 好的网站推广网页做推广
  • 嘉兴做网站优化哪家好东莞网络优化排名
  • 主机怎么做网站二次跳转网络营销软件条件
  • 十六局集团门户网seo优化设计
  • 网站建设免费的什么是互联网推广
  • 怎么做网站建设优化方案官网电子版
  • 网站开发技术路线软文交易平台
  • 中国做国外的网站云南网络营销公司
  • 做网站用的图片分辨率平台推广
  • 烟台网站建设加盟什么搜索引擎搜索最全
  • 东营做网站全自动推广引流软件
  • 搭建动态网站的步骤百度官网下载安装到桌面上
  • 可登录的网站有哪些竞价外包推广
  • 建网站学什么seo推广工具
  • 网站应该如何推广百度竞价开户哪家好
  • 提供佛山顺德网站建设怎么快速优化网站