数组靠「第几格」取值,字典靠「叫什么」取值。角色名、等级、性别这种带名字的数据,字典才是对的工具。
本课互动训练:专属动画 + 选择题测验。 打开 第 04 课 · 动画闯关,先看动画,再完成 3 道选择题。
local t = {
name = "张三",
age = 18,
sex = "男",
}
print(t.name) --> 张三
print(t.age) --> 18
name、age、sex 是主键(key),右边是值(value)。用点号 t.name 就能把值钓出来。
print(t["name"]) --> 张三
print(t["age"]) --> 18
t.name 和 t["name"] 完全等价。点号是简写,Lua 偷偷帮你把 name 当成字符串主键。
什么时候必须用中括号?
local k = "age" print(t[k])local t = { ["姓名"] = "张三" } -- 要用中括号
print(t["姓名"])
不写中括号直接 姓名 = "张三" 会报错。有些引擎支持中文标识符,但行业里主流代码几乎清一色英文主键——别人接手你的代码时,英文是无障碍,中文是减速带。
| 场景 | 用哪种 |
|---|---|
| 一排装备、一串奖励 ID | 数组 {a,b,c} |
| 角色的 name/level/bag | 字典 {name=..., level=...} |
| 背包里每件装备还有数量 | 数组套字典,或字典套表 |
判断口诀:要「第几个」用数组,要「叫什么」用字典。
字典的值还可以是表:
local player = {
name = "大战士",
att = { hp = 500, dc = 50 },
}
print(player.att.hp) --> 500
一层点到底。这就是「角色数据库」的雏形,后面实战篇会展开。
今日练习:建一个字典存 name/age/sex,分别用点号和中括号打印。再造一个 player.att.hp 三层结构,把 HP 调出来。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
会判断了,就能做会回话的 NPC。今天拼一个简易 GM 工具界面。 一、用 say 吐出界面 客户端编辑器 Ctrl + F…
与或非听起来玄,其实就是三张通行证。 一、and(与)= 过安检 机票 + 身份证 ,少一样不让过。后面还能无限加条件。 二…
判断 = 比较 + 分支。今天把三种 if 写法、以及工程里最好用的「防卫语句」一次练透。 一、三种判断结构 elseif …
表会建、会取、会增删改查,最后一环是 遍历 。本篇先把坑标出来,下节课正式拆迭代器。 本课互动训练 :专属动画 + 选择题测…
「我只改了 b,a 怎么变了?」——这是表引用问题的标准嚎叫。今天把钥匙和锁彻底讲清。 本课互动训练 :专属动画 + 选择题…
理论够了,进游戏干一票:用一张表,存下角色的名、级、包、属性,并用它驱动「给我装备」。 本课互动训练 :专属动画 + 选择题…