← 第二阶段学习单元凡朴 · 土星老师的创作工坊

第二阶段 · 2/6 · UNIT 08

数量会变化:变量与类型

种子拿走了,小院怎样记得还剩多少?

用整数记录数量,用布尔值理解灯的状态,用字符串显示反馈。

建议120分钟 · 可拆两次60分钟

今天要做成什么

实现0到3的收集计数,多按一次不越界;能区分数值3和文字“3”。

准备:Godot 4.6.1标准版、电脑与鼠标、纸笔和三颗种子或小积木。混龄结伴;没有电脑的孩子先参与预测、规则设计,再轮换实际操作。

下载起步工程下载参考完成工程

解压到不同文件夹,导入project.godot,打开main.tscn并运行。起步包保留上一单元能力,本课新行为还没有接好。单元07预置小院节点,先聚焦首次编码。可以将所学移回自己的农场,节点名称与路径需相应核对。

当前练习使用固定相机;收集是按键或按钮驱动的显示变化,开门是模型移动。可编辑工程需在电脑Godot中打开,手机页面用于阅读任务。

先预测,再动手

1. 用三颗真实种子做模型

桌上放三颗种子,依次放进纸盒;一人每次报告0、1、2、3。讨论已经空了以后,继续拿会怎样。游戏里也只准备三颗,不把按键次数无限当成种子。

2. 认识三种信息

整数int记录颗数;布尔bool表达真或假,例如灯是否可见;字符串String保存文字。先修改脚本中两条变量声明并读出来:seeds从0开始,total_seeds从种子节点数量得到。小数float今天只在位置与灯能量中认一认。

3. 把计数放在函数外面

在extends下方加入var seeds: int = 0,再加入@onready var total_seeds: int = $Seeds.get_child_count()。@onready让我们等节点准备好再去数。不要在每次按键内部重新把seeds设为0。

4. 一次收集一颗

在_unhandled_input里新增与点灯if同级的collect_seed分支,接入collect_seed()。把下面函数加到文件末尾,先核对场景树Seeds下的Seed1、Seed2、Seed3。get_child从0开始编号,所以先藏起当前那颗,再加1。

5. 看见记录而不只看见消失

运行后按C,观察种子逐颗隐藏、文字变成1/3、2/3、3/3。这里hide隐藏显示,不是销毁,也不是角色碰撞拾取。str把整数转换为可显示的文字。

6. 试一试边界

按第四次C,计数应该仍是3并提示种子已收完。提前说明if保护边界,下一单元再专门理解条件。关掉运行窗口再运行,数量回到0;这还不是存档。

这一课读懂这一小段

先添加上述变量;在输入函数中添加if event.is_action_pressed("collect_seed"):,下一行缩进调用collect_seed();核心函数放在farm.gd末尾。

func collect_seed() -> void:
	if seeds >= total_seeds:
		$HUD/Panel/Rows/Status.text = "种子已经收完啦"
		return
	$Seeds.get_child(seeds).hide()
	seeds += 1
	$HUD/Panel/Rows/Status.text = "种子:" + str(seeds) + "/" + str(total_seeds)

只改本课所需的部分。参考工程包含前面已经完成的功能,不要求一次重写整份脚本。遇到错误先读最上面一条,核对行号、名称与缩进。

做到这里,就值得分享

基础任务:实现0到3的收集计数,多按一次不越界;能区分数值3和文字“3”。

可选挑战:复制一颗Seed并摆到空位,验证总数自动变成4;比较变量由场景获取与写死数字的不同。

留下证据:一张0→1→2→3的记录表,外加第四次收集的结果。

我预测____;实际发生____;我修改____;现在我能解释____。

卡住时检查这里

每次都是1

检查var seeds是否误写在collect_seed函数内部;成员变量才能在多次调用之间保持。

Invalid index

先检查seeds是否已经等于种子数,再检查先隐藏、后加1的顺序。

重新运行数量消失

本单元只在本次运行期间记录状态,长期保存将在第五阶段学习。

AI与英语,一起帮助理解

可以请AI解释某一行、提出两种测试情况,或比较预测与实际。先给出节点名称和错误原文,再核对建议;每次只改一处并亲自验证,不让AI替代整份作品的理解。

每个孩子从当天真实经历贡献3个英文单词,例如seed · count · number。共同回忆一个小事件,请AI协助组织短故事,再核对、读演或配图。另留15—20分钟,允许先用中文说明,不强塞所有词。

土星老师的备课提示

变量的意义从真实物品出发。int、bool、String只各举一个例子,避免一次讲全类型系统。让孩子预测第四次收集的结果。

建议时间安排
0—10分钟观察、演一演,先说预测
10—25分钟土星老师分段引入一个概念
25—50分钟第一轮操作,每次改一处
50—60分钟离屏休息;可在此拆成两次学习
60—80分钟完成基础任务,伙伴互助
80—90分钟离屏休息
90—110分钟试边界、换人试玩与修改
110—120分钟保存工程、解释变化与下一步

若基础任务未完成,下一次接着做;减少挑战,不挤掉休息。可在农场做简短离屏活动。保持每个孩子亲自操作的机会,大孩子通过解释与协助成长。课前打开起步与参考工程,确认键盘、窗口焦点和文件保存位置。

给家长:今天可以怎样聊

请孩子演示一次成功和一次未满足条件的情况,再问“你怎么知道它会这样?”关注解释、尝试和修改过程;允许借助提示和伙伴协助,不把打字速度当成学习能力。

接口参考

Godot输入 · Godot信号 · GDScript语言参考