lua脚本和应用程序有不同的路径。

我的问题是我很难指定 Lua 搜索路径。

例如,在我的脚本中有一个 require(“someScript”) 行,它可以完美地工作(独立运行脚本时可以使用 someScript 中的函数)。

然而,当我运行我的应用时,脚本会失败。我认为这是因为 Lua 正在相对于应用程序而不是相对于脚本查找位置。

硬编码整个驱动器路径不是一个选项,因为人们可以在任何地方下载游戏,所以我能做的最好就是游戏的根文件夹。

我们有 XML 文件来加载关于对象的信息。在它们中,当我们指定对象使用的脚本时,我们只需要做些像 Content/Core/Scripts/someScript.lua 这样的事情,其中 ContentDebug 在同一目录中,应用程序位于 Debug 中。如果我尝试将其(“内容/核心...”)放在 Lua 的 package.path 中,当我尝试独立运行脚本时会出现错误。

我真的陷入了困境,不知道如何解决这个问题。任何帮助都将不胜感激。谢谢。

附注:当我在应用程序中打印出默认的 package.path 时,我看到语法如 ;.\?.lua 在一个序列中...

;.\?.lua;c:...(长文件路径)\Debug\?.lua; 我假设 ';' 意味着路径的结尾,但我不知道 .\?.lua 意味着什么。任何在目录中的 Lua 文件?

原文链接 https://stackoverflow.com/questions/2489387

点赞
stackoverflow用户88888888
stackoverflow用户88888888

你可以通过将自己的加载器放入 package.loaders 表来定制 require 加载模块的方式。参见:

http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders

如果你想要确保事情被良好地隔离,你可能想要删除所有默认的加载器,并用一个完全符合你要求的加载器来替换它们,不多也不少。(它可能与现有的加载器中的某一个相似,所以你可以以此为指南。)

2010-03-22 01:23:45