虚幻4引擎中与场景相关的几个概念:
-
关卡(Level):UE4中的游戏场景,最为常用的概念。
-
地图(Map):地图是编辑好的场景,保存为.umap文件。一个工程可以有很多umap文件。在UE4中,一个Level可由多个umap组合而成。在UE4中,只有
UEngine::LoadMap
与之相关。/// 通过UMAP文件资源加载关卡 UWorld* PersistentWorld = GetWorld(); // 新建流式关卡 UClass* StreamingClass = ULevelStreamingKismet::StaticClass(); ULevelStreaming* StreamingLevel = Cast<ULevelStreaming>(StaticConstructObject(StreamingClass, PersistentWorld, NAME_None, RF_Transient, NULL)); // FName PackageName = TEXT("/Game/TempUmap/Level_01") 根据项目实际情况获取并设置PackageName StreamingLevel->SetWorldAssetByPackageName(PackageName); StreamingLevel->bShouldBeLoaded = true; StreamingLevel->bShouldBeVisible = true; // 加载后可见 StreamingLevel->bShouldBlockOnLoad = false; StreamingLevel->PackageNameToLoad = PackageName; // !非常重要:加载的资源包名称 PersistentWorld->StreamingLevels.Add(StreamingLevel);
-
世界(World):可由多个子Level组成。
基于此,虚幻4提供了以下击中加载场景方式:
- LevelStreamingVolume:是可放置在关卡中的Actor,当Pawn进入此Volume时,即可加载对应关卡。可实现无缝地图加载。
- 使用蓝图加载:需要用到LoadStreamLevel或OpenLevel节点。
- OpenLevel:会阻塞式加载,游戏会在加载时“卡死”。
- LoadStreamLevel:会异步加载,此时可显示加载界面或播放过程动画等。
- 使用代码加载:通过
UGameplayStatics::LoadStreamLevel
加载。