学无先后,达者为师

网站首页 编程语言 正文

UE4 WorldComposition加载Level与位置偏移代码分析

作者:MOON-P 更新时间: 2022-03-11 编程语言

一、加载Level

1. WorldComposition会在UWorld::Tick里调用UpdateStreamingState处理GetDistanceVisibleLevels处理,如果是Visible的就加入UWorld的参数SteamingLevelsToConsider

2. 如果是使用LoadStreamLevel方法加载(加载WorldComposition的Level需要先把Level设置成DisableDistanceStreaming=true),也会加入UWorld的SteamingLevelsToConsider

3. UWorld::UpdateLevelStreaming处理SteamingLevelsToConsider,然后ULevelStreaming::UpdateStreamingState处理LevelStreaming的状态来进行加载,卸载,显示,隐藏Level。

4.ULevelStreaming::UpdateStreamingState的UnLoad状态,开始加载Level

二、应用WorldComposition的偏移

1. ULevelStreaming::UpdateStreamingState里根据状态会调用到这里,一般是UnLoaded时调用,之后开始异步加载Level。

2. Level::PostLoad时,在正常情况下,WorldComposition的SubLevel就在前面加入到了StreamedLevelsOwningWorld,这里取出赋值给OwmingWorld

3. UWorldComposition::OnLevelPostLoad这里取Level的OwningWorld,所以正确赋值OwningWorld很重要,然后把OwningWorld的WorldComposition的Tile赋值。

4. UpdateStreamingState的状态是MakingVisible调用偏移

GetLevelOffset函数的数据是Level调用PostLoad调用UWorldComposition::OnLevelPostLoad的值

原文链接:https://blog.csdn.net/u013507300/article/details/118551003

栏目分类
最近更新