我尝试使用CMake在发布模式下构建游戏。我禁用了DEBUG_MODE并成功构建了项目,但是当我运行它时,我收到一个错误,我没有进入调试模式。
这是调用堆栈。
KernelBase.dll!763d2f71() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for KernelBase.dll]
[External Code]
> SortingGame.exe!BackgroundBuilder::configureTimeLabel(const cocos2d::Vec2 timeContainerEndPos) Line 236 C++
SortingGame.exe!BackgroundBuilder::configureTimeContainerSprite() Line 226 C++
SortingGame.exe!GameScene::configureTimeContainerSprite() Line 352 C++
SortingGame.exe!GameScene::configureScene() Line 210 C++
SortingGame.exe!GameScene::init() Line 130 C++
SortingGame.exe!GameScene::create() Line 25 C++
SortingGame.exe!LoadingScreen::onKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event * event) Line 168 C++
[External Code]
SortingGame.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) Line 24 C++
[External Code]
BackgroundBuilder::configureTimeContainerSprite()
函数只被调用一次。如果我在BackgroundBuilder::configureTimeContainerSprite()
中拨打BackgroundBuilder::BackgroundBuilder()
,则BackgroundBuilder::configureTimeContainerSprite()
中的错误不会发生在main.cpp文件的return Application::getInstance()->run();
行中。这里的错误也是一样的。
使用Visual Studio 2013构建项目时出现相同的错误。
答案 0 :(得分:0)
我弄明白了这个问题。似乎我将资产预加载到游戏中的方式存在问题。在TitleScreen::init()
我使用此功能加载资产。
GameManager::getInstance()->getResourceManager()->loadTextures("GameScene", callback);
这里是CocosResourceManager::loadTextures()
void CocosResourceManager::loadTextures(const std::string &sceneName, const std::function<void(std::string sceneName, int loadedAssetCount, int totalAssetCount)> &callback)
{
std::map<std::string, std::string> assets = parseAssetsArray(sceneName);
int totalAsset = assets.size(), loadedAsset = 0;
for (auto value : assets) {
TextureCache::getInstance()->addImage(value.second);
loadedAsset++;
callback(sceneName, loadedAsset, totalAsset);
}
}
当我没有使用该功能加载资产时,在发布模式下没有崩溃。当我预先加载它们时,我将它与我之前在上面发布的堆栈跟踪一起使用。 TextureCache::getInstance()->addImageAsync();
和TextureCache::getInstance()->addImage();
都会发生这种情况
我预加错了吗?任何人都可以解释为什么会这样吗?