Sprite::create(“file.png”) 在 Cocos2d-x C++ Visual Studio 上返回 null

Posted

技术标签:

【中文标题】Sprite::create(“file.png”) 在 Cocos2d-x C++ Visual Studio 上返回 null【英文标题】:Sprite::create(“file.png”) return null on Cocos2d-x C++ Visual Studio 【发布时间】:2021-03-07 06:47:33 【问题描述】:

我正在尝试使用 SonarFrameworks 创建一个 Sprite,尽管我的文件已很好地集成到项目中,但得到一个 null。

我尝试添加:

FileUtils::getInstance()->addSearchPath("res/");

并尝试将 Content 属性设置为“True”和“False”(默认),但仍然是同样的问题。

有什么想法吗?

【问题讨论】:

看起来background 设置为“res/mainMenue.png”,但文件位于“resource/mainMenu.png” - 尝试将其更改为那个。 我试过了,还是不行:/ hmm... 我的猜测是问题是程序找不到文件。如果您尝试使用这样的相同文件夹添加搜索路径怎么办?:FileUtils::getInstance()->addSearchPath("resource/"); 如果这不起作用,您可以尝试在创建精灵之前打印出 searchPaths 吗?有了这个cout << FileUtils::getInstance()->getSearchPaths (); ,如果搜索路径偏离了,那就可以解释了:) 我尝试了 /resource 但结果相同。使用 getSearchPaths 我得到了:“H:/Programs/TicTacToe/TicTacToe/proj.win32/Debug.win32/Resources/” by default 所以我尝试使用 /Resources 但结果相同......我看到了这条消息:“cocos2d: fullPathForFilename:在 Resource/mainMenu.png 找不到文件。可能缺少文件。" 让我们continue this discussion in chat。 【参考方案1】:

感谢 GandhiGandhi,我找到了解决方案:

CCFileUtils.cpp文件中的FileUtils::fullPathForFilename函数中,添加了这个

    std::string search = searchIt;
    int tail = search.size() - 10; // For replace /Resources
    search.replace(tail, 9, "res");

在第一个“for(...)”之后,我就这样替换了查找资源的路径。

for (const std::string& searchIt : _searchPathArray)

    std::string search = searchIt;
    int tail = search.size() - 10; // For replace /Resources
    search.replace(tail, 9, "res");

    for (const auto& resolutionIt : _searchResolutionsOrderArray)
    
        fullpath = this->getPathForFilename(newFilename, resolutionIt, search);

        if (!fullpath.empty())
        
            // Using the filename passed in as key.
            _fullPathCache.emplace(filename, fullpath);
            return fullpath;
        

    

【讨论】:

以上是关于Sprite::create(“file.png”) 在 Cocos2d-x C++ Visual Studio 上返回 null的主要内容,如果未能解决你的问题,请参考以下文章

Unity 精灵物体的创建 Sprite.create

cocos2d-x,重复动作

slider

Cocos2dx-Lua中Sprite精灵的3种创建方法

cocos2dx ver3.3 的Sprite3DTest 例子中可以学到啥

cocos2d-x js 中创建node的方法