3.1 KiB
3.1 KiB
策划使用指南 - 子关卡切换系统
快速开始
第一步:给 TileMap 添加标签
- 在关卡中选择一个
PaperTileMapActor - 在 Details 面板中找到
Tags数组 - 添加一个新标签,格式为:
SubLevel_名称- 例如:
SubLevel_Room1 - 例如:
SubLevel_Boss - 例如:
SubLevel_Shop
- 例如:
重要: 标签必须以 SubLevel 开头(这是默认前缀)
第二步:验证自动收集
- 运行游戏
- 查看输出日志(Output Log)
- 应该看到类似这样的消息:
LogTemp: Collected TileMap: 'PaperTileMapActor_1' with tag 'SubLevel_Room1' LogTemp: LevelGMBase: Collected 3 TileMap(s) with tag prefix 'SubLevel'
第三步:在蓝图中切换子关卡
- 获取 GameMode 引用
- 调用
ChangeSubLevelByName节点 - 输入参数:
- Tile Map Name: 你添加的完整标签名(例如
SubLevel_Room1) - Transition Time: 过渡时长(秒),-1 表示使用默认值
- Tile Map Name: 你添加的完整标签名(例如
示例场景配置
假设你有一个包含 3 个房间的关卡:
TileMap 配置
| TileMap Actor | 添加的标签 | 用途 |
|---|---|---|
| TileMap_Start | SubLevel_Start |
起始房间 |
| TileMap_Middle | SubLevel_Middle |
中间房间 |
| TileMap_End | SubLevel_End |
结束房间 |
蓝图切换示例
当玩家触碰 Door_To_Middle 时:
获取 GameMode
调用 ChangeSubLevelByName
- Tile Map Name: SubLevel_Middle
- Transition Time: 1.5 (1.5秒平滑过渡)
高级配置
修改标签前缀
如果你想用其他前缀(不用 "SubLevel"):
- 选择关卡的 GameMode 蓝图
- 找到
Tile Map Collection Tag属性 - 修改为你想要的前缀(例如 "Room")
- 所有 TileMap 的标签也要相应修改(例如 "Room_1"、"Room_2")
手动配置(不推荐)
如果你不想使用自动收集:
- 在 GameMode 中,设置
Auto Collect Tile Maps = false - 手动在
Level Tile Maps映射中添加每个 TileMap - 使用自定义的名称作为 Key
常见问题
Q: 为什么摄像机没有切换? A: 检查以下几点:
- TileMap 是否添加了正确的标签(以 "SubLevel" 开头)
- 输出日志中是否显示 TileMap 被成功收集
- ChangeSubLevelByName 中使用的名称是否与标签完全一致
Q: 可以即时切换不要过渡动画吗? A: 可以,将 Transition Time 设为 0
Q: 可以自定义过渡时长吗? A: 可以,Transition Time 参数就是过渡时长(秒)
- -1 = 使用默认值(1.0秒)
- 0 = 即时切换
- 任何正数 = 指定的过渡时长
Q: 一个 TileMap 可以有多个标签吗? A: 可以,但只会用第一个匹配的标签作为 Key
调试技巧
-
查看已收集的 TileMap:
- 运行游戏后,在编辑器中选择 GameMode 实例
- 查看
Level Tile Maps属性,可以看到所有已收集的映射
-
启用详细日志:
- 输出日志会显示每个被收集的 TileMap
- 显示切换开始和完成的消息
-
测试不同的过渡时长:
- 尝试不同的 Transition Time 值找到最佳效果
- 推荐范围:0.5 - 2.0 秒