为什么游戏开发者都爱 Lua?零基础快速上手指南

一、初见 Lua:Hello, World!

lua 复制代码
print("Hello, World!")

如何运行?

对于初学者,最简单的方式是使用在线 Lua 运行环境,你无需在本地安装任何东西。在此推荐使用官网运行

二、核心语法:变量与数据类型

1. 变量声明

Lua 的变量不需要预先声明类型,可以直接赋值。默认情况下,变量是全局的。但最佳实践是使用 local 关键字将其声明为局部变量,以避免污染全局命名空间。

lua 复制代码
-- 这是一个全局变量 (不推荐)
message = "Hello from a global variable"

-- 这是一个局部变量 (推荐)
local name = "Alice"
local age = 30

print(name, age) -- 可以一次打印多个变量

2. 主要数据类型

Lua 有8种基础数据类型,我们先了解几个最常用的:

  • nil : 表示"无"或"空值"。一个未赋值的变量就是 nil。将一个变量赋值为 nil 相当于删除它。
  • boolean : truefalse。注意,在 Lua 中,只有 falsenil 被视为"假",其他所有值(包括数字0和空字符串"")都是"真"。
  • number: 表示所有数字,不区分整数和浮点数(Lua 5.3后可区分)。
  • string: 字符串,可以用单引号或双引号表示。
  • table : 这是 Lua 最核心、最强大的数据类型!

三、万物之源:table

1. 当作数组使用

table 的键是连续的整数时,它就表现得像一个数组。

lua 复制代码
local fruits = {"apple", "banana", "orange"} -- 这是一个 table

-- 惊奇之处:Lua 的索引是从 1 开始的!
print(fruits[1])  -- 输出: apple
print(fruits[3])  -- 输出: orange

-- 获取长度
print(#fruits)    -- 输出: 3

注意!这是一个巨大的不同点! 与大多数编程语言(C, Java, Python, JS)的 0-based 索引不同,Lua 的索引从 1 开始。这是新手最容易犯错的地方。

2. 当作字典(哈希表)使用

你可以用字符串或其他类型的值作为键。

lua 复制代码
local person = {
    name = "Bob",
    age = 28,
    isStudent = false
}

-- 访问数据
print(person.name)       -- 输出: Bob (点表示法)
print(person["age"])     -- 输出: 28 (方括号表示法)

-- 添加新数据
person.city = "New York"
print(person.city)       -- 输出: New York

四、流程控制

Lua 的流程控制语法也十分简洁,并以 end 关键字结尾。

1. 条件判断 if-then-else

lua 复制代码
local score = 85

if score >= 90 then
    print("优秀")
elseif score >= 60 then
    print("通过")
else
    print("不及格")
end

2. 循环

for 循环(数值型):

lua 复制代码
-- 从 1 循环到 5
for i = 1, 5 do
    print(i)
end

for 循环(泛型/迭代器): 这是遍历 table 最常用的方式。ipairs 用于遍历类数组的 tablepairs 用于遍历类字典的 table

lua 复制代码
-- 遍历数组
local colors = {"red", "green", "blue"}
for index, value in ipairs(colors) do
    print(index, value)
end
-- 输出:
-- 1   red
-- 2   green
-- 3   blue

-- 遍历字典
local player_stats = {hp = 100, mp = 50, attack = 15}
for key, value in pairs(player_stats) do
    print(key, "is", value)
end

五、函数

函数也是 Lua 中的一等公民,可以像变量一样传递和赋值。

lua 复制代码
-- 定义一个函数
function greet(name)
    return "Hello, " .. name .. "!" -- '..' 是字符串连接符
end

-- 调用函数
local greeting_message = greet("Charlie")
print(greeting_message) -- 输出: Hello, Charlie!

结语

点个赞,关注我获取更多实用 Lua 技术干货!如果觉得有用,记得收藏本文!

相关推荐
江华森36 分钟前
Web 开发基础:HTTP 与 REST
前端·网络协议·http
IT_陈寒1 小时前
Redis的KEYS命令把我搞崩溃了,改用SCAN才活过来
前端·人工智能·后端
Jackson__2 小时前
为什么 Agent 越聊越慢?聊聊 Context(上下文)管理
前端·agent·ai编程
KaMeidebaby2 小时前
卡梅德生物技术快报|抗体合成:多肽抗体合成工程化方案:Nsp2 保守肽多抗制备与多维度验证
前端·网络·数据库·人工智能·算法
青禾网络2 小时前
前端做音画匹配这件事,我从"随机塞"到"AI 自动对齐"
前端·github
2601_963771373 小时前
Hardening Enterprise WordPress Sites Against REST API Leaks and Bad Headers
前端·windows·word·php
蓝银草同学3 小时前
Stream 实战:博客列表排序、过滤与分页(AI 辅助学习 Java 8)
java·前端·后端
2601_957190903 小时前
飞行影院安装施工指南:场地、动感系统与影片内容配套
大数据·前端·人工智能
爱折腾的小黑牛3 小时前
简记往来批量录入功能的实现:从文本到结构化数据
前端·算法
YHHLAI3 小时前
Agent 智能体开发实战 · 第六课:MCP 协议 —— 让 Agent 跨进程调用工具
前端·人工智能