0

我目前被这个问题困扰了大约 3 天。

我正在为游戏使用 cocos2d-x 2.1.3 和 Lua 脚本。AssetsManager作为基础,我现在已经成功地.zip从服务器获取文件并将它们加载到应用程序中。但是,有一个小问题。

在我的项目(基于AssetsManagerTest)中,它下载了一个.zip文件(称为package.zip包含两个文件,一个.png(称为HelloWorld.png)和一个.lua文件(称为game.lua)。该.lua文件只是创建了一个HelloWorld场景,只是为了测试它是否有效,并且确实有效。

然后我编辑game.lua文件以需要另一个.lua文件,称为gem.lua. 当我尝试运行它时,它会报告一个错误,说它找不到gem.lua. 所以我尝试编辑我的C++代码以使用CCLuaEngine::addSearchPath( const char * ),但是,它仍然不起作用。

我下载package.zip文件夹并将其解压缩到CCFileUtils::getWritablePath(). 文件被正确提取并game.lua找到。当我尝试添加gem.lua到包中时,我添加了这段代码:

// Obtain the full script path. The value returned is:
//     CCFileUtils::getWritablePath() + "/games/game/scripts"
const std::string scriptPath = MyAssetManager::sharedManager() -> getScriptPath();

// Obtain the script file path
std::string gamePath = scriptPath + "/game.lua";

// Add the scriptPath to the LuaEngine search paths
CCLuaEngine::defaultEngine() -> addSearchPath( scriptPath.c_str() );

// Run the script
CCLuaEnging::defaultEngine() -> executeScriptFile( gamePath.c_str() );

即使gem.lua在正确的路径 ( /games/game/scripts/) 中,引擎也无法以某种方式找到它。环顾四周,原来搜索路径的基本路径是Resource文件夹。

有没有办法CCLuaEngine寻找可写路径?不过,它可以用资源来完成。

这是我收到的全部错误消息:

[LUA ERROR] ...D35-DB7A1B515ED3/Documents/games/game/scripts/game.lua:3: module 'gem.lua' not found:
    no field package.preload['gem.lua']gem.lua
    no file './gem/lua.lua'
    no file '/usr/local/share/luajit-2.0.1/gem/lua.lua'
    no file '/usr/local/share/lua/5.1/gem/lua.lua'
    no file '/usr/local/share/lua/5.1/gem/lua/init.lua'
    no file 'Scripts/gem/lua.lua'
    no file 'Scripts/Common/gem/lua.lua'
    no file 'Scripts/HomeScene/gem/lua.lua'
    no file 'Scripts/Games/gem/lua.lua'
    no file '/Users/xxxx/Library/Application Support/iPhone Simulator/6.1/Applications/E0CFD097-5DED-4E6D-8D35-DB7A1B515ED3/Documents/games/game/scripts/gem/lua.lua'
    no file './gem/lua.so'
    no file '/usr/local/lib/lua/5.1/gem/lua.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
    no file './gem.so'
    no file '/usr/local/lib/lua/5.1/gem.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
4

1 回答 1

1

鉴于错误消息,您可能require "gem.lua"在代码中编写了类似的内容。您应该删除扩展名:require "gem".

于 2013-06-14T08:36:15.530 回答