公司目前使用的遊戲引擎是 Cocos2dx 2.2.6
別問我為啥不升級,這個牽扯到超多問題,沒辦法動
最近在建立一個小型的專案
專案中用到 Git 的 Submodule 引入別人寫的 Library
問題在別寫的 Lua Code 中有 require
當這個專案被其他人引入并執行時
原本 require 的位置變成了其他專案的根目錄了
執行的時候就會報錯,表示找不到 XXX module
原本我直覺使用 Cocos2dx 提供的 CCFileUtils
裡面有一個函數 addSearchPath
但是呼叫并傳入 search path 卻是沒有用的,還是會出錯
仔細看一下 Cocos2dx 底層的 C++
發現 Cocos2dx 有改寫 Lua 尋找檔案的方式,請見 Cocos2dxLuaLoader.cpp
它在找檔案的時候還是依靠 Lua 的 package.path(http://lua-users.org/wiki/PackagePath)
所以我一直呼叫 C++ 的 addSearchPath 是叫心酸的!!
最后修改的方法如下
local function addSearchPath(searchPath)
return string.format(
"%s;%s?.lua;%s?/init.lua",
package.path, searchPath, searchPath);
end
package.path = addSearchPath("Libs/");
Cocos2dx 你還我 30 分鐘啊啊啊!
沒有留言:
張貼留言