数据层
数据层是UE5新功能,可以代替子关卡,可以实现同一个地方,不同条件下(通过蓝图控制、比如玩家有某个任务、或者开启某种玩法),整个场景都可以变掉。
一般Gameplay游戏运行时会变动的东西才会放到数据层,纯模型场景不需要放置在数据层。
地形无法使用数据层。
数据层可以嵌套组织。
一个Actor可以放置在多个数据层。
每Actor一个文件
UE5新功能,不再把关卡里的所有内容全部放到一个关卡里,而是关卡里的每一个Actor都以一个文件进行存储(文件命名、管理由虚幻自动化处理)。
这样用于解决一个很大的地图,里面只改一个actor的某个参数、就需要提交整个地图、非常适合多人协同地图编辑、同时也优化了日常开发更新流程。
世界分区中的Actor
这些截图都是截的Actor的细节面板。
数据层
每个Actor的细节面板可以配置Actor在哪个数据层、也可以通过数据层Outliner方便加入。
RuntimeGrid
每个Actor细节面板的世界分区部分,可以指定Actor在运行时属于哪一个“运行时网格”上。如果填None,则使用默认的(后面会讲。)
IsPatiallyLoaded
这个勾勾用来决定该Actor放在启用世界分区的地图中时的加载机制。一般是打勾的。
打勾:
如果Actor不在任何数据层里,那么会根据玩家距离进行加载。
如果在数据层,那么所属的任意一个数据层被启用后就会加载。
但实际情况是,即便数据层启用了,打勾后,还是会遵守距离加载的原则。
不打勾:
如果Actor不在任何数据层里,那么就会加载(意味着永久加载,尽可能避免。)
如果Actor在数据层,那么所属的任意一个数据层被启用后就会被加载。
简单来说,数据层优先级更高。
运行时网格定义
前面讲到了Actor如何指派到不同的运行时网格,这里讲如何定义运行时网格。
编辑器下的世界分区面板可以以512mx512m固定单位来加载要编辑查看的区块。
但游戏运行时使用另外一套运行时网格来处理单位的加载,这另外一套运行时网格就叫“RuntimeGrid(运行时网格)”
RuntimeGrid在每个世界分区的地图的WorldSettings部分定义。
如上图所示,默认有一个MainGrid,它的大小是256m,加载范围是768m。如果Actor没有被指定到任何数据层,就会使用跟这个MainGrid。
但我还添加了一个其他的网格:Gameplay网格大小是10米,加载范围是20米,颜色是青色。
如上图所示,我给一个立方体设置在了Gameplay格子,如果玩家相机距离立方体所在格子超过20米,那么立方体就会被卸载。
废弃项
关卡蓝图
关卡蓝图官方已经不推荐再使用,任何被关卡蓝图引用的Actor会永久加载!
替代方案:
如果非要引用,建议使用一个Actor(暴露变量),然后在细节面板里手动选择引用。这种相互引用的Actor在打包的时候会被打包在同一个关卡中!
LevelBounds
关卡边界是以前每个关卡都会根据关卡内Actor摆放而自动生成的一个能框住所有关卡内Actor的盒子。现在已经被弃用。智能对象依赖LevelBounds查询关卡内的可交互对象,关卡蓝图游戏地点依赖LevelBounds判定某个Actor是否在关卡内。
关卡蓝图游戏地点
不兼容项
由笔刷构建的Actor不会自动被世界分区所管理和流送加载,后续都要转化成StaticMesh。

