若我在lua中使用require语句如下,则会加载文件失败
require("framework.cocos2dx.luaoc")
我找到的原因应该是luaLoader的问题,位置在
Cocos2dxLuaLoader.cpp中
cocos2dx_lua_loader函数
最新的cocos2dx3.2引擎实现代码片段,原来的cocos2dx3.0也存在这个问题
static const std::string BYTECODE_FILE_EXT = ".luac";
static const std::string NOT_BYTECODE_FILE_EXT = ".lua";
std::string filename(luaL_checkstring(L, 1));
size_t pos = filename.rfind(NOT_BYTECODE_FILE_EXT);
if (pos != std::string::npos)
{
filename = filename.substr(0, pos);
CCLOG("%s", filename.c_str());
}
这里LOG打印出的是:
framework.cocos2dx
很明显它直接查找 “.lua” 把传入的 “framework.cocos2dx.luaoc” 截掉了 “.luaoc”
这个BUG要是不注意还真挺让人困惑的