2010-03-22 112 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