2010-03-22 95 views
1

我的问题是,我无法确定路径,Lua的在看。不同的路径

例如,在我的剧本我有一个require("someScript")线完美的作品(它能够当脚本运行的独立使用功能的someScript

然而,当我跑我的应用程序,该脚本将失败。我相信这是因为Lua是在寻找相对于应用程序的位置,而不是相对于脚本。

将整个路径硬编码到驱动器不是一种选择,因为人们可以下载游戏无论他们喜欢什么,所以我可以去的最高级别是游戏的根文件夹。

我们有XML文件加载对象的信息。在他们中,当我们指定对象使用的脚本时,我们只需要执行类似Content/Core/Scripts/someScript.lua的操作,其中ContentDebug位于同一目录中,并且该应用位于Debug的内部。如果我尝试将该(Content/Core...)放入Lua的package.path中,当我尝试单独运行脚本时,会出现错误。

我真的被卡住了,我不知道如何解决这个问题。任何帮助表示赞赏。谢谢。

P.S.当我在应用程序打印出默认package.path我看到类似语法;.\?.lua 序列中的像...

;.\?.lua;c:...(long file path)\Debug\?.lua;我承担;意味着路径的终点,但我不知道是什么.\?.lua手段。目录中的任何Lua文件?

回答

2

您可以通过将自己的加载程序放入package.loaders表中来自定义require加载模块的方式。在这里看到:

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

如果你想确保的事情是很好的沙盒,你可能想删除所有默认装载机和一个不正是你想要什么,仅此而已替换它们。 (它可能与现有的一个相似,所以你可以使用这些作为指导。)

+2

我没有使用这种方法,但我把它作为答案。我用package.path = package.path ..“; Content/Core/Scripts/?. lua” – Person 2010-03-22 01:38:40