跳到主要内容

遭遇战快速上手

GCS · Quick Start

把玩家单位、敌人阵容、奖励卡组和战斗规则组装进一个遭遇战资产,在 Play Mode 中启动它。

适用于玩家、卡组、卡牌和敌人都已配置完成,现在需要用遭遇战把它们组合成可运行战斗的开发者。

遭遇战(encounter)是运行时启动的战斗资产。卡牌、状态、卡组和单位只有被某个遭遇战间接或直接引用后,才会进入可玩的战斗流程。本文构建一场遭遇战,并完成启动验证。

第 1 步:打开 Encounter 模式

打开 Workbench,切到 Encounter 标签:

Tools/TinyGiants/GCS/Game Card Editor

左侧一栏列出场景 GameCardManager 上已注册 encounter database 中的遭遇战。列表为空时,先在 manager 上激活一个 encounter database。

预置数据库激活后,列表中应显示 12 场 demo 遭遇战,并标有 NormalEliteBoss。选中一场后,inspector 会显示下面要处理的区块:

Workbench Encounter 模式:一场遭遇战的玩家、敌人阵容、奖励卡组和战斗规则字段


第 2 步:创建遭遇战并命名

+ 新建一场遭遇战,或用 复制一场已经能正常启动的 demo 遭遇战再改。然后填 BasicVisual 区块:

字段建议
Name显示在编辑器列表里;如果你自己做遭遇战选择 UI,也会用到。
Description简短的风味描述或创作备注。
Difficulty自由填写的标签。demo 用 NormalEliteBoss,选一个或自己输入。
Tags可选标签,用于筛选或流程逻辑。
Icon可选的战斗横幅或预览图。
Difficulty 不改变战斗规则

Difficulty 只是显示和分组标签。手牌数、抽牌数、能量、奖励全部来自 Battle Rules 区块,和该字符串无关。

到这里,inspector 顶部应该显示你的名字和难度标签,下方的 Player 区块仍然提示需要一个玩家单位。


第 3 步:选择玩家

Player 区块选择一个 HP、能量、卡组、prefab 都已配置好的玩家单位(这些字段在 Player 模式中对应 Base HPBase EnergyDeck 区块和 Template)。这里最重要的是卡组:单位如果指向了错误卡组,新卡不会出现在战斗中,即使战斗本身能正常启动。

选好之后,Player 区块应该显示这个单位的卡片和摘要,比如 demo 猎人 ScoutHP 70 · Energy 3,"Player Unit is required" 的提示随之消失。


第 4 步:添加敌方单位

Add Enemy Unit,至少选一个敌人。先只放一个;等单敌人战斗能启动、能预告意图、能正常结算回合之后再加。

这个列表是有序的:每个条目占一个编号槽位,行可以拖拽排序,demo 战场按槽位顺序摆放敌人。做多敌人阵容时要有意识地安排顺序。

你应该能看到敌人坐在 1 号槽位上,带着它的等级和 HP 区间,比如 demo 的 Plague Stalker 显示 Normal · HP 14-18


第 5 步:选择奖励卡组

Reward Deck 是胜利卡牌奖励的来源。获胜时,奖励界面从这个卡组里随机抽卡:副本数越多的条目越容易被抽中,同一轮里同一张卡不会出现两次。第一次测试直接复用 demo 的奖励卡组;猎人场景用的是 Wild Harvest

没有奖励卡组的遭遇战也可以正常结束,但胜利界面不会提供卡牌奖励。


第 6 步:设置战斗规则

Battle Rules 区块定义这场遭遇战的玩法规则。下表默认值也是代码默认值,demo 战斗使用同样数值。首次验证可以保持默认。

规则默认值含义
Starting Hand Size5战斗开始时抽的牌数。
Draw Per Turn5第一回合之后,每个回合开始时抽的牌数。
Max Hand Size10手牌硬上限。超出上限的抽牌直接进弃牌堆。
Starting Energy00 表示用玩家单位的 Base Energy 作为每回合能量,大于 0 则在这场遭遇战里取代它。
Card Reward Count3胜利界面从奖励卡组里提供几张卡。配了奖励卡组时,运行时至少提供 1 张。
Armor DecayResetOnTurnStart护甲在回合开始时清零,还是跨回合保留。
Hand DiscardDiscardOnTurnEnd手牌在回合结束时弃掉,还是带进下回合。
Enemy Intent DisplayFullFull 显示意图和数值,IconOnly 只显示图标,Hidden 什么都不显示。
Animation Gap0.28结算步骤之间的间隔秒数。

这些规则会直接影响玩家体验。已有规则应在该区块中设置,不要把同样行为写入外部代码,避免编辑器中不可见。

所有区块填完后,inspector 应能按顺序说明这场战斗:身份、玩家、阵容、奖励和规则。

Demo 猎人线的第一场 Fenmoss Hollow 读起来正是这样:

Encounter 模式中选中的 demo 遭遇战 Fenmoss Hollow,inspector 里是 Battle Rules 区块,预览列把整套规则重复成 chip


第 7 步:启动遭遇战

不需要代码启动时,使用 GameCardEncounterBootstrap。它和 GameCardManager 挂在同一个 GameObject 上,进入 Play Mode 时自动开战。

字段第一次测试的值
Default Encounter你刚创建的遭遇战。
Auto Start On Play启用(默认就是启用)。

Auto Start On Play 开启但 Default Encounter 为空时,bootstrap 只会记录一条警告并跳过启动。进入 Play Mode 后没有战斗时,先检查该字段。

按下 Play。战场应完成初始化:玩家生成,敌人生成,起手手牌展开。


第 8 步:验证战斗

以下各项全部成立,遭遇战才算配好:

  • 选中的玩家出现,卡组和 HP 符合预期。
  • 列表里的每个敌人都生成,HP 落在各自配置的区间内。
  • 起始手牌数量等于 Starting Hand Size。
  • 能量等于 Starting Energy;规则为 0 时等于玩家的 Base Energy。
  • 显示规则允许时能看到意图图标。
  • 结束回合会执行敌方行动。
  • 胜利时出现奖励界面;配了奖励卡组时有卡可选。
  • Console 里没有 missing database、missing prefab 或 null encounter 错误。

常见错误

症状可能原因
进了 Play Mode 却没有战斗Bootstrap 上的 Default Encounter 为空,或 Auto Start On Play 被关掉了。
战斗用了错误的玩家开局遭遇战指向了复制出来的或过期的玩家单位。
新卡从不出现玩家单位挂的卡组不是你编辑的那个卡组。
没有敌人出现Enemy Units 列表为空,或槽位引用了已删除的敌人资产。
胜利后没有卡牌奖励Reward Deck 缺失或没有条目。
第一回合抽牌数量不符合预期Starting Hand Size、Draw Per Turn 和 Max Hand Size 设置冲突;超出上限的抽牌会被弃掉。