You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:44:56