基本介绍
UE中存在多个World而用于管理World的工具就是WorldContext
WorldContext不同模式的数量
独立运行的游戏:只有唯一的一个World
编辑器模式:拥有两个WorldContext,一个是给编辑器使用,另外一个是给PIE使用。
核心结构
struct FWorldContext
{
[...]
TEnumAsByte<EWorldType::Type> WorldType;
FSeamlessTravelHandler SeamlessTravelHandler;
FName ContextHandle;
//TravelURL和TravelType用于设定下一个Level的目标和转换过程。
/** URL to travel to for pending client connect */
FString TravelURL;
/** TravelType for pending client connects */
uint8 TravelType;
/** URL the last time we traveled */
UPROPERTY()
struct FURL LastURL;
/** last server we connected to (for "reconnect" command) */
UPROPERTY()
struct FURL LastRemoteURL;
}
OpenLevel流程简述
- 设置当前World的Context上的TravelURL。
- UEngine::TickWorldTravel的时候判断TravelURL非空来真正执行Level的切换。
总而言之,WorldContext既负责World之间切换的上下文,也负责Level之间切换的操作信息。