开发 / ROBLOX
Luau 表:路线列表与按键查找
一个表可以描述顺序,另一个表可以按名称保存站点信息。本文用虚构的提灯散步练习,区分索引、键和值,读取记录,并检查插入或移除元素后的位置变化。
分开两个问题 #
路线包含起点、桥梁终点和观景点。下一站是哪一处,是一个问题;某站对应什么说明,是另一个问题。顺序与站点资料相关,但用两个明确的数据集合表达,更容易看清职责。
使用 routeStart、bridgeEnd 和 lookout 作为有序标识符,并用相同键保存详情。这些是原创练习数据,不是现有游戏对象。改变顺序时,就不必把位置数字当作站点永久身份。
读取列表第一项 #
花括号用于创建表。第一个示例将三个值连续写入,形成简单数组。route[1] 读取第一位置,route[3] 读取第三位置。Luau 这种列表从一开始,零索引不代表开头。
运行之前先预测输出的 routeStart 和 lookout。比较具体值,而非仅仅看到消息出现。这是内存数据练习,不会移动角色、建立 Workspace 对象或跨会话保存路线。
local route = {"routeStart", "bridgeEnd", "lookout"}
print(route[1])
print(route[3])用键查找详情 #
第二个示例在 stations 中保存具名记录。stations["bridgeEnd"] 按准确键选择,不依赖它写在表中的位置。记录内 title 是教学输出标签,enabled 是独立的布尔标记。
连接依据相同标识符:从列表读取 ID,再查找 stations[ID]。让普通数组保持连续。不要把字典遍历顺序当成路线;独立列表决定次序,键用于找到特定记录。
区分缺失与 false #
不存在的键对应 nil;enabled=false 则保存一个存在的布尔值。因此站点可以被找到,但标记关闭。缺少记录与存在但禁用的记录,应该产生不同观察。
先确认记录存在,再读取字段。遇到未知 ID,保留包含该 ID 的明确信息并停止相关练习步骤。用第一站替代会把数据错误伪装成成功查找,使问题难以发现。
local stations = {
routeStart = {title = "Start", enabled = true},
bridgeEnd = {title = "Bridge", enabled = false},
lookout = {title = "Lookout", enabled = true},
}
local station = stations["bridgeEnd"]
if station == nil then
print("Missing station")
else
print(station.title, station.enabled)
end插入中间站点 #
第三个示例用 table.insert 将 restSpot 插入第二位置。原来的第二项 bridgeEnd 变成第三项,lookout 也向后移动。比较操作前后列表:改变的是位置,不是 bridgeEnd 的名字。
如果未来界面只保存数字二,插入后它可能指向另一站。需要标识站点时用稳定 ID,需要说明位置时用索引。表不会替项目决定所选步骤如何保存。
移除后重新读取位置 #
table.remove 移除指定位置,并将后续项前移。练习删除第二位置的临时 restSpot,恢复原始顺序。核查 bridgeEnd 再次第二、lookout 再次第三。未经重新确认读取旧位置,可能得到其他值。
保持教学数组连续。不要随意在中间赋 nil,再把稀疏结果的长度视为普通路线长度。把位置连接玩家进度前,先定义真实系统的插入与移除规则。
local route = {"routeStart", "bridgeEnd", "lookout"}
table.insert(route, 2, "restSpot")
print(route[2])
print(route[3])
table.remove(route, 2)
print(route[2])
print(route[3])分开数据和玩法动作 #
路线列表描述次序,站点记录描述信息。移动角色、显示提示或发放奖励,需要另行编写使用这些值的逻辑。print 成功不能证明对象交互、网络或持久保存正确。
所有译文保留练习标识符,玩家可见文字可单独本地化。如果只在一个集合翻译技术键,列表与字典的连接会断开。核对 ID 与记录,而不是漂亮的屏幕名称。
做小范围数据检查 #
检查第一项、已知键、未知 ID、false 标记与插入后位置。文章示例配有独立预期值检查,针对普通 Luau 表,不是现有 Roblox Studio 游戏运行。
加入负面情况:路线某个 ID 不在 stations 中。发现不匹配才是有用结果,不要默默换成其他站继续。记录问题 ID 和需要修正的数据集合,避免立即改动整个路线。
记住表引用 #
将表赋给另一变量不会创建独立副本。backupRoute 这样的名称,若仍指向同一表,就不能保留原内容。计划实验时,区分引用与真正准备的独立副本。
这些示例各自从小型数据集合开始,不提供通用嵌套配置复制方案。下一项工作应明确嵌套数据与需要共享的部分;浅复制不能自动被视为每层都独立。
| 检查项 | 预期结果 |
|---|---|
| 第一项 | 开始索引是 1 |
| 已知键 | 找到预期记录 |
| 未知键 | 发现缺失 ID |
| 插入与移除 | 确认新位置 |
交接数据结构 #
最终记录包含有序 ID、站点信息、字段含义、缺失键处理与预期位置变化。写清哪些示例单独检查过,哪些部分尚未连接游戏对象。下一位开发者得到具体数据约定,而不是完成玩法的承诺。
官方来源解释 Luau 表;散步、键名与检查是原创练习。现有游戏没有改变。路线处理、交互和进度可作为后续独立工作,继续区分数据与实际执行的动作。
| 字段 | 交接内容 |
|---|---|
| 顺序 | 连续 ID 序列 |
| 键 | 标识符与字段含义 |
| 缺失 | 明确处理未知 ID |
| 操作 | 预期的位置移动 |