1. 做一次传话游戏
一人按纸按钮说“我被按了”,一人按事先约定执行收种子。没有约定就没有回应;按钮不必知道种子藏在哪里。借此认识信号,而不是把信号当成只能用于网络的消息。
第二阶段 · 5/6 · UNIT 11
不用键盘,点一个按钮怎样叫动已有的动作?
把按钮pressed信号连接到已有函数,区分发出消息、连接与回应。
建议120分钟 · 可拆两次60分钟按钮与C键都能收集,每次只增加一颗,并能指出发出者、信号和接收函数。
准备:Godot 4.6.1标准版、电脑与鼠标、纸笔和三颗种子或小积木。混龄结伴;没有电脑的孩子先参与预测、规则设计,再轮换实际操作。
下载起步工程下载参考完成工程解压到不同文件夹,导入project.godot,打开main.tscn并运行。起步包保留上一单元能力,本课新行为还没有接好。单元07预置小院节点,先聚焦首次编码。可以将所学移回自己的农场,节点名称与路径需相应核对。
当前练习使用固定相机;收集是按键或按钮驱动的显示变化,开门是模型移动。可编辑工程需在电脑Godot中打开,手机页面用于阅读任务。
一人按纸按钮说“我被按了”,一人按事先约定执行收种子。没有约定就没有回应;按钮不必知道种子藏在哪里。借此认识信号,而不是把信号当成只能用于网络的消息。
打开起步工程中的HUD/Panel/Rows/Collect按钮。它已显示但尚未连接;按C仍能收集,点击按钮却没有动作。先确认collect_seed函数原本就能工作。
本课程工程用代码连接:在已有_ready函数里增加下面这一行,不另写第二个_ready。pressed后面是connect;传入collect_seed函数本身,没有括号。运行后点击“收集一颗”。
土星老师可以演示选中Button,在信号面板找到pressed并连接到接收函数。若改用此方法,先删除代码里的连接,避免两条不同回调重复执行。两种方法选一种完成即可。
交替按C和点击按钮,计数应每次只加1。两种入口都调用collect_seed,所以边界保护也共用;无需再写另一份收集代码。
先注释那一行连接,验证按钮停止回应但C仍可用;再恢复连接,确认两者都正常。保存一次实验记录;本单元不急着学习自定义信号。
修改已有_ready函数;不要把它追加成第二个同名函数。参考工程采用代码连接,main.tscn里没有额外信号连接。
func _ready() -> void:
$HUD/Panel/Rows/Status.text = "小院准备好了"
$HUD/Panel/Rows/Collect.pressed.connect(collect_seed)只改本课所需的部分。参考工程包含前面已经完成的功能,不要求一次重写整份脚本。遇到错误先读最上面一条,核对行号、名称与缩进。
基础任务:按钮与C键都能收集,每次只增加一颗,并能指出发出者、信号和接收函数。
可选挑战:以同样方法连接LampButton到toggle_lamp,为下一单元做准备。
留下证据:画出Button → pressed → collect_seed三格图,记录断开连接时发生什么。
我预测____;实际发生____;我修改____;现在我能解释____。
connect里误写成collect_seed()会尝试先执行;这里传的是不带括号的函数引用。
检查是否既在编辑器连到一个回调,又在代码连到另一个收集回调;保留一种连接方式。
不要再建一个_ready,把连接放进已经存在的函数。
可以请AI解释某一行、提出两种测试情况,或比较预测与实际。先给出节点名称和错误原文,再核对建议;每次只改一处并亲自验证,不让AI替代整份作品的理解。
每个孩子从当天真实经历贡献3个英文单词,例如button · signal · connect。共同回忆一个小事件,请AI协助组织短故事,再核对、读演或配图。另留15—20分钟,允许先用中文说明,不强塞所有词。
信号可以先在场景和按钮上认清,再接触代码。大小伙伴轮流担任按钮、连接线和回应者,把概念演出来;自定义信号作为之后的扩展。
| 建议时间 | 安排 |
|---|---|
| 0—10分钟 | 观察、演一演,先说预测 |
| 10—25分钟 | 土星老师分段引入一个概念 |
| 25—50分钟 | 第一轮操作,每次改一处 |
| 50—60分钟 | 离屏休息;可在此拆成两次学习 |
| 60—80分钟 | 完成基础任务,伙伴互助 |
| 80—90分钟 | 离屏休息 |
| 90—110分钟 | 试边界、换人试玩与修改 |
| 110—120分钟 | 保存工程、解释变化与下一步 |
若基础任务未完成,下一次接着做;减少挑战,不挤掉休息。可在农场做简短离屏活动。保持每个孩子亲自操作的机会,大孩子通过解释与协助成长。课前打开起步与参考工程,确认键盘、窗口焦点和文件保存位置。
请孩子演示一次成功和一次未满足条件的情况,再问“你怎么知道它会这样?”关注解释、尝试和修改过程;允许借助提示和伙伴协助,不把打字速度当成学习能力。