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的主要内容,如果未能解决你的问题,请参考以下文章