Appearance
示例场景
打开项目中的示例场景(Assets/DLSample/Levels/_Sample/SampleLevel),可以看到以下关卡基础结构。
text
LevelRoot
└─ Gameplay #Gameplay控制器
├─ Player #主角
├─ CameraRoot #摄像机控制器
└─ ... #其余杂项
└─ LevelHolder #关卡容器一.Gameplay
关卡中与Gameplay相关的控制器,角色等均在Gameplay及其子物体上。
查看Gameplay对象,挂载了以下组件:
1.GameplayEntry
Gameplay的入口,通过MonoBehaviour控制ModulesManager代理场景中所有模块的生命周期
GameplayEntry是整个Gameplay中的唯一单例,可通过GameplayEntry.Instance访问其实例。 如果场景中不存在GameplayEntry对象,会在运行时懒加载。
2.GameplayManagerComponent
Gameplay中的必要模块组件。处理状态机、计时器、输入、音频、玩家控制等模块的创建和注册等。
*项目中以Component命名的组件仅作为游戏模块的创建工厂,用于创建和初始化模块,并注册模块到ServiceLocator和ModulesManager。
字段说明:
LevelData: 关卡数据文件(见第三节"创建关卡")MainPlayer: 游戏主角,默认为Gameplay下的Player对象AudioSource: 游戏中的音频播放器AudoClip: 关卡音乐的音频文件
3.GameplayUIComponent
Gameplay中的UI模块组件。
字段说明:
PanelsConfig: UI界面配置文件。见DLSample/Resources/Datas/Configs/UIPanelConfigUiCamera: 当前场景的UI相机GameplayUIMapper: PanelsConfig中配置的界面id与游戏界面的id映射ParparePanelId: 准备界面idPausePanelId: 暂停界面idOverPanelId: 结算界面idRespawnPanelId:复活界面id
4.GameplaySkinSystemComponent
Gameplay中的皮肤模块组件。
字段说明:
SkinsData: 皮肤配置文件。见DLSample/Resources/Datas/Configs/SkinDataSkinsContainer: 运行时用于存放实例化的SkinBehaviour对象的容器
二.Player
关卡中的主角对象
查看Player对象, 挂载了以下组件:
1.GameplayPlayerMove
角色运动逻辑组件,用于处理角色移动,转向,滑翔等。
*为保证角色正常运动,使用该组件的对象需要挂载BoxCollider和Rigidbody组件
字段说明:
MoveSpeed: 角色移动速度ForceGrounded: 是否强制角色为处于地面状态UseGravity: 是否应用重力LocalGravity: 角色本地重力GroundLayer: 地板层级。角色仅会在下落到此LayerMask下包含的层级对象上时才会被判定为落地。CheckGroundDist: 地面射线检测距离Directions: 角色转向序列参数,所有方向通过方向向量表示。Upwards: 当前方向序列的上方方向向量DirectionsSequence: 方向序列列表。游戏开始时会将角色方向应用为该序列最后一个元素(索引为^1),并在角色转向时依次循环。
2.PlayerDamager
角色死亡判定组件,用于检测死亡相关碰撞。
字段说明:
Player: 当前角色的GameplayPlayerMove组件ObstacleLayer: 障碍物层级DrownLayer: 溺水层级BorderLayer: 边界层级
3.SkinAdapterComponent
皮肤应用组件,用于将SkinBehaviour应用于角色上。
字段说明:
PlayerMove: 当前角色的GameplayPlayerMove组件PlayerDamager: 当前角色的PlayerDamager组件HeadContainer: 作为皮肤实例化角色头部的容器。见Player下的HeadContainer对象
4.TriggeryCollector
基于触发器的收集收集物组件。
*使用该组件应该确保收集物或挂载该组件的对象至少一个需要包含Rigidbody组件。
字段说明:
ExcludeLayers: 排除该LayerMask下的收集物
三.CameraRoot
相机控制对象,默认为平滑跟随相机。挂载了以下组件:
1.CameraFollower
相机平滑跟随逻辑组件。
采用Max冰焰提供的跳舞的线官方相机跟随在直角坐标系的实现方式,与冰焰模板类似,此处省略。
2.CameraFollowerControllerComponent
相机跟随控制器组件。
字段说明:
Follower : 当前CameraFollower组件。
接下来
在了解了关卡的基础结构后,可以进入下一节“创建关卡”。