Roblox Guidebook知识库
简体中文 ⌄

开发 / 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
操作预期的位置移动

原始资料

Roblox Creator Hub — Tables