【UE】Level、World
Level
Level在Unreal Engine(UE)中代表游戏的关卡或地图,是游戏世界的一个组成部分。它是一个容器,包含了多个游戏对象(Actors),并支持环境的各种设定和行为脚本。
Level的设计理念与功能
- 继承性:Level继承自UObject,因此拥有UObject的所有特性,如内存管理和反射功能。
- 脚本支持:默认包含一个ALevelScriptActor,允许开发者在Level中直接编写脚本,控制关卡逻辑和行为。
- 细粒度管理:UE支持将游戏世界划分为多个Level,通过动态加载和卸载,实现资源的高效管理和优化游戏性能。
- 网络功能:支持网络游戏中的数据同步和管理,通过特定的Actor排序机制,优化网络传输效率。
World
World是UE中更高层级的概念,用于组织和管理游戏中的所有Level。它是一个全局容器,包含一个或多个Level。
World的设计理念与功能
- 层级组织:World作为顶层容器,管理多个Level,每个Level可以独立被加载或卸载。
- 持久性和流动性:支持Persistent Level(始终加载的关卡)和Streaming Levels(按需动态加载的关卡)的概念。
- 全局设置:World设置(通过AWorldSettings管理)影响所有的Level,如物理环境和游戏规则等。
- 灵活的加载策略:支持SubLevel和WorldComposition技术,实现复杂的Level组合和动态加载策略。
Level和World之间的关系
结构关系
- 容器与内容:World是容器,Level是内容。World中可以包含多个Level,Level中包含多个Actor。
- 设置和管理:World的设置通过Persistent Level继承,其他Level可以有自己的设置,但主要配置由World的Persistent Level确定。
管理策略
- 动态加载与卸载:为了优化性能和资源使用,World支持根据玩家位置和游戏需求动态加载和卸载Level。
- 物理和导航共享:虽然Level在逻辑上是独立的,但它们共享同一个World的物理场景和导航网格,保证游戏行为的一致性。