修改SearchPaths的三种方式

2.1.2开始引擎重构了CCFileUtils,添加了资源的搜索路径队列,目前提供的修改接口有两个addSearchPath和setSearchPaths。
addSearchPath在当前队列的最后添加新路径。
setSearchPaths可以一次添加多个路径,有两种写法:insert(来源于AssetsManagerTest)和push_back(来源于HelloCpp)。
两个接口都支持相对路径和绝对路径,使用相对路径时,会自动补全。
使用getSearchPaths可以获得当前路径队列。

一、向空队列添加
1.无测试代码
  1. std::vector searchPaths1 = CCFileUtils::sharedFileUtils()->getSearchPaths();
  2. for (std::vector::const_iterator iter = searchPaths1.begin(); iter != searchPaths1.end(); ++iter)
  3. {
  4. CCLOG("searchPaths1 : %s", iter->data());
  5. }

  6. //添加测试代码

  7. std::vector searchPaths2 = CCFileUtils::sharedFileUtils()->getSearchPaths();
  8. for (std::vector::const_iterator iter = searchPaths2.begin(); iter != searchPaths2.end(); ++iter)
  9. {
  10. CCLOG("searchPaths2 : %s", iter->data());
  11. }
复制代码

两次取到的都只有资源根目录

2.使用addSearchPath
  1. CCFileUtils::sharedFileUtils()->addSearchPath("480_800");
  2. CCFileUtils::sharedFileUtils()->addSearchPath("720_1280");
复制代码
Win32

Andriod

可以看到新路径按顺序添加在最后

3.setSearchPaths的insert方式
  1. std::vector searchPaths;
  2. searchPaths.insert(searchPaths.begin(), "480_800");
  3. searchPaths.insert(searchPaths.begin(), "720_1280");
  4. CCFileUtils::sharedFileUtils()->setSearchPaths(searchPaths);
复制代码
Win32

Andriod

可以看到后插入的排在最前面

4.setSearchPaths的push_back方式
  1. std::vector searchPath;
  2. searchPath.push_back("720_1280");
  3. searchPath.push_back("480_800");
  4. CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);
复制代码
Win32

Andriod同3,略
可以看出路径按添加顺序排在前面

二、如果队列里已经有路径,可以先调用getSearchPaths获得队列,然后修改队列
  1. CCFileUtils::sharedFileUtils()->addSearchPath("480_856");

  2. std::vector searchPaths1 = CCFileUtils::sharedFileUtils()->getSearchPaths();
  3. for (std::vector::const_iterator iter = searchPaths1.begin(); iter != searchPaths1.end(); ++iter)
  4. {
  5. CCLOG("searchPaths1 : %s", iter->data());
  6. }

  7. //添加测试

  8. std::vector searchPaths2 = CCFileUtils::sharedFileUtils()->getSearchPaths();
  9. for (std::vector::const_iterator iter = searchPaths2.begin(); iter != searchPaths2.end(); ++iter)
  10. {
  11. CCLOG("searchPaths2 : %s", iter->data());
  12. }
复制代码
1.insert方式
  1. searchPaths1.insert(searchPaths1.begin(), "480_800");
  2. searchPaths1.insert(searchPaths1.begin(), "720_1280");
  3. CCFileUtils::sharedFileUtils()->setSearchPaths(searchPaths1);
复制代码

可以看到后添加的排在前面,多了一个根路径的原因是,接口会判断路径的最后一个字符是不是"/",如果不是则添加一个,而接口在最后会判断是否已经添加过根路径,如果没有则加上,因为多了一个"/",导致接口认为没有加过,所以Win32下有这个问题,安卓下没有问题

2.push_back方式
  1. searchPaths1.push_back("720_1280");
  2. searchPaths1.push_back("480_800");
  3. CCFileUtils::sharedFileUtils()->setSearchPaths(searchPaths1);
复制代码

可以看到新路径按顺序加在最后

你可能感兴趣的:(修改SearchPaths的三种方式)