开始之前
完成第 6 课,理解 for 循环和等待。使用独立的 Lesson07 Baseplate。
Course overview
只有一个路标时,一个变量就够了。路标变成三个、十个,你不想给每个路标复制一套相同代码。table 可以帮你把相关数据放在一起。
这一课会用到两种整理方式:按顺序排队的数组,以及按名称查找的字典。它们在 Luau 中都是 table。
完成第 6 课,理解 for 循环和等待。使用独立的 Lesson07 Baseplate。
一条按 Camp → Bridge → Cave 顺序亮起的路标路线。
能通过调整表中顺序改变点亮次序,能解释 route[1] 与 settings.reward 的不同。

Learning route
每完成一小步,就测试一次。先说出你预计会看到什么,再用 Play 和 Output 检查,不用急着一次写完所有代码。
先用第 2 课的操作摆出路线,代码负责决定点亮顺序。名字将成为程序寻找对象的线索,大小写必须一致。
Luau 数组通常从 1 开始:route[1] 是第一项,route[3] 是第三项。#route 可读取这张没有空洞的列表的长度。
settings.reward 比 settings[2] 更容易读懂,因为 reward 已经说明这个数字是奖励。字典适合颜色、时长、奖励等有名字的数据。
下面的完整脚本把“要处理谁”和“要做什么”分开。route 负责对象顺序,循环体负责改变颜色。
增加第四站需要同时增加场景对象和列表项。只加字符串,没有对应的 Part,程序找不到它;只加 Part,没有加入列表,它就不会点亮。
Step by step
先用第 2 课的操作摆出路线,代码负责决定点亮顺序。名字将成为程序寻找对象的线索,大小写必须一致。
每个路标保持独立。不要把它们先放进 Model,否则本课的 workspace:WaitForChild(name) 就找不到直接子对象。
Step by step
Luau 数组通常从 1 开始:route[1] 是第一项,route[3] 是第三项。#route 可读取这张没有空洞的列表的长度。
ipairs 会按 1、2、3……依次给出索引和值,遇到第一个缺失的值就停止。不要用 route[2] = nil 随意在数组中挖洞。
local route = {"Camp", "Bridge", "Cave"}
print("First stop:", route[1])
print("Stop count:", #route)
for index, name in ipairs(route) do
print(index, name)
end

Step by step
settings.reward 比 settings[2] 更容易读懂,因为 reward 已经说明这个数字是奖励。字典适合颜色、时长、奖励等有名字的数据。
字典没有“第一站、第二站”的路线顺序。不要依赖 pairs 遍历字典的先后顺序来安排关卡。
local settings = {
reward = 10,
pauseSeconds = 1,
activeColor = Color3.fromRGB(90, 220, 150),
}
print("Reward preview:", settings.reward)
Step by step
下面的完整脚本把“要处理谁”和“要做什么”分开。route 负责对象顺序,循环体负责改变颜色。
WaitForChild(name) 用字符串寻找对象。名字拼错时,它会一直等,并可能在 Output 提醒 Infinite yield;那不是程序很慢,而是对象路径需要检查。
local route = {"Camp", "Bridge", "Cave"}
local settings = {
pauseSeconds = 1,
activeColor = Color3.fromRGB(90, 220, 150),
}
for index, name in ipairs(route) do
local marker = workspace:WaitForChild(name)
local originalColor = marker.Color
print("Stop", index, name)
marker.Color = settings.activeColor
task.wait(settings.pauseSeconds)
marker.Color = originalColor
end
print("Route complete")
Step by step
增加第四站需要同时增加场景对象和列表项。只加字符串,没有对应的 Part,程序找不到它;只加 Part,没有加入列表,它就不会点亮。
列表连续排列时,table.insert(route, "Tower") 可追加一项;table.remove(route, 2) 会删除第二项,并让后面的项目向前移动。
Homework
建立第四个路标,把路线改成 Camp → Cave → Bridge → Tower。
只调整 settings.pauseSeconds,让每站亮两秒。
用函数包装点亮过程,传入不同的路线表,再运行一次。
Exit questions
字符串 Camp;它不是 Part 本身,需要用这个名字寻找对应对象。
路线需要按连续的数字索引依次处理。
还不是,只是一个保存数字的字段。实际给玩家加金币将在第 10 课实现。
不够,还需要在正确路径创建同名 Part。
Explore further
正文代码可以直接复制。先确认脚本类型、放置位置,以及这段代码是完整版本还是小实验;不要把同一脚本的多个版本叠加运行。界面参考图已标注来源,图中的对象名可能与本课不同,请以操作步骤为准。