我的问题是我无法指定Lua查看路径。
例如,在我的脚本中,我有一个require("someScript")
行可以完美地运行(当脚本独立运行时,它可以使用someScript
中的函数。
然而,当我运行我的应用程序时,脚本失败。我相信这是因为Lua正在寻找相对于应用程序而不是相对于脚本的位置。
将整个路径硬编码到驱动器不是一个选项,因为人们可以在任何他们喜欢的地方下载游戏,所以我能走的最高的是游戏的根文件夹。
我们有XML文件来加载对象的信息。在其中,当我们指定对象使用的脚本时,我们只需执行类似Content/Core/Scripts/someScript.lua
的操作,其中Content
与Debug
位于同一目录中且应用程序位于{{1}内}}。如果我尝试将它(Debug
)放在Lua的package.path中,当我尝试独立运行脚本时会出现错误。
我真的被卡住了,我不知道如何解决这个问题。任何帮助表示赞赏。感谢。
P.S。当我在应用程序中打印出默认的package.path时,我看到Content/Core...
之类的语法
按照......的顺序。
;.\?.lua
我认为;.\?.lua;c:...(long file path)\Debug\?.lua;
表示路径的结束,但我不知道;
的含义。目录中的任何Lua文件?
答案 0 :(得分:2)
您可以通过将自己的加载器放入require
表来自定义package.loaders
加载模块的方式。见这里:
http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders
如果你想确保沙盒很好,你可能想要删除所有默认的加载器,并用一个完全符合你想要的东西替换它们,仅此而已。 (它可能与现有的一个类似,因此您可以将它们作为指南。)