修改SearchPaths的三种方式

本文详细介绍了CCFileUtils的引擎重构,包括添加资源搜索路径队列及使用addSearchPath、setSearchPaths接口的方法。阐述了如何向空队列添加路径,以及在已有路径的情况下如何进行路径的调整和优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

  6. //添加测试代码

  7. std::vector<std::string> searchPaths2 = CCFileUtils::sharedFileUtils()->getSearchPaths();
  8. for (std::vector<std::string>::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<std::string> 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<std::string> 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<std::string> searchPaths1 = CCFileUtils::sharedFileUtils()->getSearchPaths();
  3. for (std::vector<std::string>::const_iterator iter = searchPaths1.begin(); iter != searchPaths1.end(); ++iter)
  4. {
  5. CCLOG("searchPaths1 : %s", iter->data());
  6. }

  7. //添加测试

  8. std::vector<std::string> searchPaths2 = CCFileUtils::sharedFileUtils()->getSearchPaths();
  9. for (std::vector<std::string>::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);
复制代码

可以看到新路径按顺序加在最后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值