2.开发环境搭建

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 路径。

参考博客

Lua 开发环境搭建



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

×

喜欢就点赞,疼爱就打赏