游戏开发 2 | 第 11-12 关
📜

自定义游戏目标

Custom Game Goals

✍️ 手动添加
✅ 标记完成
🎯

游戏目标:内置 vs 自定义

以前我们用内置目标(系统帮我们改作业):

  • 🛡️ survive (活下来)
  • ⚔️ defeat (打倒几个)
  • 💎 collect (收集几个)
自定义目标 (Manual Goal):
你自己写“任务说明”,自己写代码判断“完成没”。
就像你自己给自己列的任务清单!
系统自动批改
🆚
我的任务单
打败那个大魔王!
✍️
📌

添加任务卡: addManualGoal

我们要先在屏幕上贴一张“任务卡”。

# 返回一个目标对象(Goal Object)
bossGoal = game.addManualGoal("打败大魔王!")

1. 显示文字给玩家看。
2. 把这张“卡”存到变量 bossGoal 里,以后要用它来盖章。

任务目标
打败大魔王!
变量 bossGoal 拿着这张卡
💮

盖章:setGoalState

当任务达成时,我们要告诉游戏:这张卡完成了!

# 目标, 状态(True=完成)
game.setGoalState(bossGoal, True)
True = ✅ 完成
False = ⬜ 未完成
任务目标
打败大魔王!
SUCCESS
点击卡片模拟代码执行
🏹

实例 I:打光侦察兵 (计数器)

任务:打败 3 个侦察兵。

count = 0
def onDefeat(event):
  if event.target.type == "scout":
    count += 1
  if count >= 3:
    game.setGoalState(scoutGoal, True)

每次打倒一个,计数器 +1,够了就盖章!

Defeated: 0/3
💂‍♂️
💂‍♂️
💂‍♂️
消灭所有侦察兵
SUCCESS
👹

实例 II:打败大 Boss

任务:只要打倒那个大家伙!

def onDefeat(event):
  unit = event.target
  # 检查类型是不是 Boss
  if unit.type == "ogre":
    game.setGoalState(bossGoal, True)
    hero.say("Boss已死!")
👹
击败 Boss
SUCCESS
🔗

事件配对:全员检查

别忘了把检查逻辑挂到单位身上!

game.setActionFor("scout", "defeat", onDefeat)
game.setActionFor("ogre", "defeat", onDefeat)

"无论是谁倒下,都要拿着‘死亡证明’去找 onDefeat 检查一下:是不是任务目标?"

💀
⬇️ 触发 defeat
onDefeat 检查
⬇️ 达成条件
setGoalState(True)
📜

任务大师口诀

"先写 ManualGoal 任务卡,
写上说明挂墙上。"
"写好判断 if 条件,
达成条件 True 盖章!"
🏅