diff --git a/03-UnrealEngine/LevelScene/World Partition(世界分区).md b/03-UnrealEngine/LevelScene/World Partition(世界分区).md index 615f910..33fcc48 100644 --- a/03-UnrealEngine/LevelScene/World Partition(世界分区).md +++ b/03-UnrealEngine/LevelScene/World Partition(世界分区).md @@ -125,6 +125,11 @@ Build - Build Minimap ### 使用蓝图或者c++控制DataLayer加载 通过**UDataLayerSubsystem**的SetDataLayerState()来控制DataLayer的加载与卸载。 +相关的Runtime加载控制可以参考:https://youtu.be/LI6TsZf5hh0?si=nwqz-S6DDR7MgSBT +需要在世界设置的WorldPartitionSetup - RuntimeSettings - Grids中设置不同层级,一些场景中的Detail场景物体可以添加到Priority比较低,Cell Size与Loading Range比较小的Grid组中。 + +物体可以放到一个Actor中,再将Actor的GridName设置好即可。之后就可以通过蓝图的DataLayerSubsystem进行控制。 + # 相关CommandLet - 烘焙WorldPartition:UnrealEditor.exe QAGame -run=cook -targetplatform=WindowsNoEditor -Unversioned -map=Playground - HLOD Build:`UnrealEditor.exe "C:\Users\user.name\Documents\Unreal Projects\MyProject\MyProject.uproject" "/Game/ThirdPersonBP/Maps/OpenWorldTest" -run=WorldPartitionBuilderCommandlet -AllowCommandletRendering -builder=WorldPartitionHLODsBuilder` @@ -165,9 +170,19 @@ https://github.com/EpicGames/UnrealEngine/commit/51d38831de4da7df196eecaf13f3d4b ## 最终结论 1. Sequence不能控制DMX是因为大世界存在垃圾,需要使用上面的重新构建命令重新构建一下,问题就解决了。 2. 舞台DMX可以考虑,加一个Runtime DataLayer,之后塞进LiveArea中。 - 1. 这样可以保证看不到的Actor也会被加载。 + 1. 有关DataLayer的Runtime设置可以参考:https://youtu.be/LI6TsZf5hh0?si=nwqz-S6DDR7MgSBT + 2. 这样可以保证看不到的Actor也会被加载。 3. 在异世界地图中也用到了WorldPartitionRuntimeStateVolumn。BP_LiveArea_12_1 -4. AWorldPartitionRuntimeStateVolume是字节自己实现的。 +4. AWorldPartitionRuntimeStateVolume是字节自己实现的。Puerts与C++没有任何调用,不知道该如何使用。 + +### ASoul的做法 +1. 几个通用DataLayer: + 1. DL_AlwaysActive + 2. DL_DMXStageAll + 3. DL_EditorOnly + 4. DL_LiveArea +2. 按照需要设置大世界专用DataLayer,主要面对的是***占用区域较大,需要全部加载的。*** + ## 笔记 1. 枝江地图,针对小房间、DMX、巨蛋DMX、舞蹈室以及舞台分别使用了DataLayer。