Lua中无法定义路径:如何在main.lua中配置font.ttf的加载路径?
解决Lua中字体文件路径加载失败的问题
针对你的目录结构:
- project/src/main.lua
- project/assets/font.ttf
以下是几种可行的解决方法:
1. 先确认程序运行的工作目录
相对路径失效最常见的原因是程序运行时的工作目录不是project文件夹。在main.lua开头加入代码打印当前工作目录:
-- Windows系统 print(io.popen("cd"):read("*l")) -- Linux/macOS系统 print(io.popen("pwd"):read("*l"))
如果输出不是project的绝对路径,说明你是从错误的目录启动程序的(比如直接从src文件夹运行lua main.lua)。此时需要切换到project目录再运行程序,相对路径../assets/font.ttf才能生效。
2. 基于脚本自身路径构建绝对路径
不管工作目录在哪,直接通过main.lua的位置定位字体文件,这是最可靠的方法:
-- 获取当前脚本的绝对路径 local script_source = debug.getinfo(1).source:sub(2) -- 去掉路径开头的@符号 local script_directory = script_source:match("(.*/)") -- 提取脚本所在的目录 -- 拼接字体文件路径 FONT_PATH = script_directory .. "../assets/font.ttf"
这段代码会自动根据main.lua的位置,计算出font.ttf的正确路径,不受工作目录影响。
3. 检查框架的资源加载规则(如果使用游戏/应用框架)
如果你是用Love2D这类Lua框架,框架会默认把project目录作为资源根目录,直接使用相对项目根的路径即可:
FONT_PATH = "assets/font.ttf"
这类框架的资源加载函数会自动从项目根目录查找文件,不需要考虑脚本所在的子目录。
额外排查点
- 确认文件名大小写:Linux/macOS系统区分文件名大小写,确保代码里的
font.ttf和实际文件名完全一致。 - 验证文件完整性:尝试用其他程序打开
font.ttf,确认文件没有损坏。
内容的提问来源于stack exchange,提问作者matu neville
相关产品推荐
相关产品推荐

