Files
ggj26_heron/Docs/关卡切换策划配置.md

3.1 KiB
Raw Permalink Blame History

策划使用指南 - 子关卡切换系统

快速开始

第一步:给 TileMap 添加标签

  1. 在关卡中选择一个 PaperTileMapActor
  2. 在 Details 面板中找到 Tags 数组
  3. 添加一个新标签,格式为:SubLevel_名称
    • 例如:SubLevel_Room1
    • 例如:SubLevel_Boss
    • 例如:SubLevel_Shop

重要: 标签必须以 SubLevel 开头(这是默认前缀)

第二步:验证自动收集

  1. 运行游戏
  2. 查看输出日志Output Log
  3. 应该看到类似这样的消息:
    LogTemp: Collected TileMap: 'PaperTileMapActor_1' with tag 'SubLevel_Room1'
    LogTemp: LevelGMBase: Collected 3 TileMap(s) with tag prefix 'SubLevel'
    

第三步:在蓝图中切换子关卡

  1. 获取 GameMode 引用
  2. 调用 ChangeSubLevelByName 节点
  3. 输入参数:
    • Tile Map Name: 你添加的完整标签名(例如 SubLevel_Room1
    • Transition Time: 过渡时长(秒),-1 表示使用默认值

示例场景配置

假设你有一个包含 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"

  1. 选择关卡的 GameMode 蓝图
  2. 找到 Tile Map Collection Tag 属性
  3. 修改为你想要的前缀(例如 "Room"
  4. 所有 TileMap 的标签也要相应修改(例如 "Room_1"、"Room_2"

手动配置(不推荐)

如果你不想使用自动收集:

  1. 在 GameMode 中,设置 Auto Collect Tile Maps = false
  2. 手动在 Level Tile Maps 映射中添加每个 TileMap
  3. 使用自定义的名称作为 Key

常见问题

Q: 为什么摄像机没有切换? A: 检查以下几点:

  1. TileMap 是否添加了正确的标签(以 "SubLevel" 开头)
  2. 输出日志中是否显示 TileMap 被成功收集
  3. ChangeSubLevelByName 中使用的名称是否与标签完全一致

Q: 可以即时切换不要过渡动画吗? A: 可以,将 Transition Time 设为 0

Q: 可以自定义过渡时长吗? A: 可以Transition Time 参数就是过渡时长(秒)

  • -1 = 使用默认值1.0秒)
  • 0 = 即时切换
  • 任何正数 = 指定的过渡时长

Q: 一个 TileMap 可以有多个标签吗? A: 可以,但只会用第一个匹配的标签作为 Key

调试技巧

  1. 查看已收集的 TileMap

    • 运行游戏后,在编辑器中选择 GameMode 实例
    • 查看 Level Tile Maps 属性,可以看到所有已收集的映射
  2. 启用详细日志:

    • 输出日志会显示每个被收集的 TileMap
    • 显示切换开始和完成的消息
  3. 测试不同的过渡时长:

    • 尝试不同的 Transition Time 值找到最佳效果
    • 推荐范围0.5 - 2.0 秒