2.开发环境搭建
2.1 知识点
版本说明
本篇主要解决的问题是:在 Windows 上把 Lua 跑起来。
学习 Lua 语法阶段,不需要一上来就折腾源码编译、LuaJIT、VSCode 调试链路这些,先保证能新建一个 .lua 文件,能执行 print("Hello Lua")。
所以学习语法阶段我使用的是 Lua for Windows。它的优点是安装简单,装完以后基本就能在命令行里直接输入 lua 运行脚本,适合入门阶段使用。
不过这里要先记住Lua for Windows 使用的是比较老的 Lua 5.1.5 版本。学习基础语法完全够用,很多 Unity Lua 热更老项目也经常接近 Lua 5.1 / LuaJIT 这一套语义。但它不是当前 Lua 官方最新版本。
实际项目里要以项目使用的 Lua 运行时为准。比如 Unity 项目里可能是:
- LuaJIT
- Lua 5.4
- 项目魔改 Lua
- xLua / toLua / SLua 内部集成的 Lua 运行时
Lua环境安装
打开 Lua for Windows 仓库
打开:
https://github.com/rjpcomputing/luaforwindows
点击页面里的 GitHub 下载入口。

下载 Lua for Windows 安装包
跳转到 Releases 页面:
https://github.com/rjpcomputing/luaforwindows/releases
下载 LuaForWindows.exe 文件。

安装 Lua for Windows
双击打开下载好的 exe 文件,按默认选项安装即可。
学习阶段建议先使用默认安装路径,不要急着改安装目录。Lua 本身不占什么空间,默认路径更省事,后面配置环境变量、编辑器路径、调试器路径时也少一些干扰。

验证 Lua 是否安装成功
按下 Win + R,输入:
cmd
打开命令行窗口,然后输入:
lua
如果能看到 Lua 版本信息,并进入 Lua 交互环境,说明安装成功。

这里显示的是:
Lua 5.1.5
说明当前安装的是 Lua 5.1 环境。
IDE选择
实际项目开发时常用的IDE
Lua 本身只是脚本语言,编辑器没有强绑定。项目里常见的选择有:
- VSCode
- IDEA
- LuaStudio
- Sublime Text
- 公司内部编辑器或工具链
其实实际项目里不用太纠结编辑器的流行程度,主要看项目工具链支持什么:
- 有没有 Lua 代码提示。
- 有没有 Lua 断点调试。
- 有没有 Unity 附加调试。
- 有没有自定义 Loader。
- 有没有热更打包流程。
- 有没有代码规范检查。
学习阶段能跑脚本就行。真正进项目后,一般还是按项目组现有工具链来。一般来说我自己试下来,VSCode 是比较顺手的。
学习时可以使用的编辑器
学习阶段推荐:
- Sublime Text
- VSCode
Sublime Text 打开快,适合随手写小脚本。
VSCode 插件多,后面配 Code Runner、EmmyLua、Unity 调试都更方便。
Lua脚本的创建
Lua 脚本本质就是文本文件。
直接新建一个普通文本文件,然后把后缀名改成:
.lua
比如:
Lesson02_开发环境搭建.lua

如果 Windows 弹出“修改文件扩展名可能导致文件不可用”的提示,选择确认即可。

可以写一个最简单的测试脚本:
print("Hello Lua")
能正常输出,就说明 Lua 脚本执行链路已经通了。
Sublime Text环境配置
Sublime Text 适合快速写一些 Lua 小脚本。
基本流程:
- 去官网下载 Sublime Text。
- 如果需要中文界面,可以安装中文插件。
- 用 Sublime Text 打开
.lua文件。 - 按
Ctrl + B运行脚本。
如果 Ctrl + B 没有正常运行,先不要怀疑代码,先回到 cmd 输入:
lua
如果 cmd 里都找不到 lua,说明是 Lua 环境或环境变量没配好,不是 Sublime Text 的问题。
VSCode环境搭建
安装 VSCode
直接去 VSCode 官网下载安装即可。
安装完成后,可以先安装中文插件,方便后续使用。
VSCode插件推荐
学习 Lua 阶段,不需要一口气装一堆插件。比较实用的组合是:
- Lua 语法插件:用于 Lua 语法高亮和基础提示。
- Code Runner:用于快速运行单个 Lua 脚本。
- vscode-icons:用于优化文件图标显示,可选。
- EmmyLua:用于 Lua 智能提示和调试,后面需要附加 Unity 调试时再重点配置。
这里要分清楚:Code Runner 是方便学习阶段跑单文件脚本的工具,不是正式项目里的 Lua 运行框架。
Code Runner配置
安装 Code Runner 后,建议打开:
Run In Terminal
这样 Lua 脚本会在 VSCode 内置终端里运行,而不是在一个临时输出窗口里跑。

也可以直接打开 VSCode 的 settings.json 配置:
Ctrl + Shift + P
Preferences: Open User Settings (JSON)
加入:
{
"code-runner.runInTerminal": true
}
这个配置的作用很简单:让 Code Runner 把输出打到 VSCode 底部终端。
后面如果脚本里有中文输出,也更方便处理终端编码问题。
运行Lua脚本
打开 .lua 文件后,可以右键选择:
Run Code
也可以使用快捷键:
Ctrl + Alt + N

如果脚本里写了:
print("Hello Lua")
终端里能正常输出,说明 VSCode 运行 Lua 脚本已经配置好了。
VSCode执行Lua中文乱码处理
如果 Lua 脚本里有中文,比如:
print("错误处理")
print("加载配置:PlayerConfig")
print("除数不能为0")
运行后 VSCode 终端里出现类似:
**********������************
�������ã�PlayerConfig
��������Ϊ0
一般不是 Lua 代码写错了,而是编码链路没对齐。
这里要先分清楚三个东西:
- Lua 脚本文件保存编码。
- VSCode 终端当前编码。
- Code Runner 实际用什么命令执行 Lua。
Lua 5.1 本身不会帮我们理解中文编码。它更像是按字节处理字符串。
所以脚本文件是 UTF-8,终端也按 UTF-8 输出,中文就正常;其中一环对不上,就容易乱码。
文件保存为UTF-8
先看 VSCode 右下角编码,建议保存为:
UTF-8
如果不是 UTF-8,可以点击右下角编码:
Save with Encoding
UTF-8
学习阶段建议整个 Lua语法知识 系列都统一 UTF-8,不要一会儿 GBK,一会儿 UTF-8。
路径也尽量用英文路径,少用空格和特殊字符。不是说一定不能用中文路径,而是学习阶段先把干扰项降到最低,后面排查问题会省很多事。
真实项目里也应该按项目规范统一编码,不要每个文件各写各的。
Code Runner使用PowerShell运行Lua
如果使用 VSCode 默认的 PowerShell 终端,可以在 settings.json 里这样配置:
{
"files.encoding": "utf8",
"code-runner.runInTerminal": true,
"code-runner.executorMap": {
"lua": "[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; $OutputEncoding=[System.Text.Encoding]::UTF8; chcp 65001 | Out-Null; & \"D:\\Software\\Lua\\5.1\\lua.exe\" \"$fullFileName\""
}
}
这里有几个点要注意:
files.encoding = utf8:新文件默认按 UTF-8 保存。runInTerminal = true:让脚本在 VSCode 终端里跑。chcp 65001:把 Windows 控制台切到 UTF-8。& "D:\Software\Lua\5.1\lua.exe":PowerShell 里执行带引号的 exe 路径,要加&。"$fullFileName":Code Runner 会把它替换成当前 Lua 文件完整路径。
我自己这里 Lua 安装路径是:
D:\Software\Lua\5.1\lua.exe
如果安装路径不一样,就把配置里的路径改成本机实际路径。
为什么PowerShell里要加&
这个点很容易踩坑。
如果在 PowerShell 里写:
"D:\Software\Lua\5.1\lua.exe"
它只是一个字符串,不会真的执行 Lua。
所以终端里只会把路径打印出来,看起来像这样:
D:\Software\Lua\5.1\lua.exe
e:\GameDevelopment\GameDevelopmentLearning\HotFix\Lua\LuaBase\LuaBase\Lesson18_Error.lua
真正要执行,需要写成:
& "D:\Software\Lua\5.1\lua.exe" "e:\GameDevelopment\GameDevelopmentLearning\HotFix\Lua\LuaBase\LuaBase\Lesson18_Error.lua"
前面的 & 可以先理解成:告诉 PowerShell,“这个字符串不是普通文本,它是一条要执行的命令”。
手动验证配置是否生效
可以在 VSCode 底部终端里手动输入一条命令测试:
[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; $OutputEncoding=[System.Text.Encoding]::UTF8; chcp 65001 | Out-Null; & "D:\Software\Lua\5.1\lua.exe" "e:\GameDevelopment\GameDevelopmentLearning\HotFix\Lua\LuaBase\LuaBase\Lesson18_Error.lua"
如果能正常输出中文,比如:
**********错误处理************
加载配置:PlayerConfig
捕获到错误:xxx
除数不能为0
说明编码和执行命令都没问题。
后面再用 Code Runner 跑,基本就不会乱码了。
旧终端要关掉重新开
改完 settings.json 后,建议把 VSCode 底部旧终端关掉:
点击终端右上角垃圾桶
然后重新右键:
Run Code
因为旧终端可能还停留在之前的编码状态。
关掉重开,配置更干净。
如果想强制用cmd终端
PowerShell 能跑通就不用改。
如果后面还是觉得 PowerShell 配置绕,也可以让 VSCode 默认使用 cmd,并且启动时自动切到 UTF-8。
settings.json 可以这样写:
{
"files.encoding": "utf8",
"code-runner.runInTerminal": true,
"terminal.integrated.profiles.windows": {
"Command Prompt UTF-8": {
"path": "C:\\Windows\\System32\\cmd.exe",
"args": ["/K", "chcp 65001>nul"]
}
},
"terminal.integrated.defaultProfile.windows": "Command Prompt UTF-8",
"code-runner.executorMap": {
"lua": "\"D:\\Software\\Lua\\5.1\\lua.exe\" \"$fullFileName\""
}
}
cmd 方案的思路是:
- 终端启动时先
chcp 65001。 - Code Runner 只负责调用 Lua.exe 执行当前文件。
- 输出统一走 VSCode 终端。
PowerShell 方案和 cmd 方案二选一即可,不要两套配置混着改。
我更推荐先用 PowerShell 方案,因为 VSCode 默认终端通常就是 PowerShell,改动更少。
乱码排查顺序
如果后面又遇到中文乱码,按这个顺序查:
- 先确认
.lua文件是 UTF-8。 - 再确认 Code Runner 是
Run In Terminal。 - 再确认执行命令里有
chcp 65001。 - 如果是 PowerShell,确认 Lua.exe 前面有
&。 - 改完配置后,关掉旧终端重新运行。
- 最后再看 Lua 安装路径是不是写错了。
这里不要一上来就怀疑 Lua 代码。
只要英文输出正常、中文乱码,优先就是编码问题。
EmmyLua与Unity附加调试
如果只是学习 Lua 基础语法,不配置 EmmyLua 也可以正常写脚本、跑脚本。
EmmyLua 更适合下面这些场景:
- 需要更好的 Lua 代码提示。
- 需要 Lua 断点调试。
- 需要附加到 Unity 进程调试 Lua。
- 项目本身用了 Lua 热更框架,需要调试 Lua 业务逻辑。
安装EmmyLua插件
在 VSCode 插件市场中搜索:
EmmyLua
安装即可。
配置JDK
部分 EmmyLua 版本需要 Java 环境。老教程里一般会要求 JDK 1.8 或以上。
系统环境变量中新建:
JAVA_HOME
值填本机 JDK 路径,例如:
C:\Program Files\Java\jdk1.8.0_191
然后在 Path 里加入:
%JAVA_HOME%\bin
再新建:
CLASSPATH
值可以写:
.;%JAVA_HOME%\bin;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
如果只是普通 Lua 学习,不需要在这一步卡太久。能正常跑 .lua 文件即可。EmmyLua 的 Java 配置主要是为了语言服务和调试能力。
附加Unity进程调试
安装完 EmmyLua 后,可以在 VSCode 的调试窗口添加配置。
选择:
EmmyLua:通过进程ID附加


配置完成后,点击运行,搜索需要附加的 Unity 进程。

一般流程是:
- 先打开 Unity 工程。
- 再在 VSCode 里启动 EmmyLua 附加调试。
- 选择对应的
Unity.exe进程。 - 在 Lua 脚本里打断点。
- 回到 Unity 触发对应逻辑。
这样就能在 VSCode 里断点调试 Lua 脚本。
EmmyLua找不到Java环境
如果出现 EmmyLua 找不到 Java 环境的情况,可以先检查:
- 是否安装了 JDK。
JAVA_HOME是否指向正确的 JDK 目录。Path里是否加入了%JAVA_HOME%\bin。- VSCode 是否已经重启。
如果环境变量已经配好但 EmmyLua 还是找不到,可以手动修改 VSCode 的 settings.json,指定 EmmyLua 使用的 Java 路径。


参考博客
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com