准备测试升级cocoscreator3.6 ,编译ok,运行自定义的FileUtils里面纯虚函数报错,查了发现以前的std::string切换到ccstd::string
当然,本质上还是用了std::string , 只不过NS切换了一下

整体搜了下,发现很多模块都做了这个调整,
想请教下引擎官方人员,做这个改变是因为什么考虑?
另外,std::vector, std::map等未来是否也会做此调整?
准备测试升级cocoscreator3.6 ,编译ok,运行自定义的FileUtils里面纯虚函数报错,查了发现以前的std::string切换到ccstd::string
当然,本质上还是用了std::string , 只不过NS切换了一下

整体搜了下,发现很多模块都做了这个调整,
想请教下引擎官方人员,做这个改变是因为什么考虑?
另外,std::vector, std::map等未来是否也会做此调整?
3.6避坑补充
如果你的项目自定义继承FileUtils,在3.6.x引擎版本,你还需要注意以下问题
这是3.6.2的FileUtils.cpp

这是3.5.2的FileUtils.cpp

修改的后果是,FileUtils::setDelegate 会把传进来的delegate销毁(因为FileUtils构造时sharedFileUtils已经指向了新的自定义FileUtils)
对应的commit应该是这个
refactor startup/shutdown of file system (#11089) · cocos/cocos-engine@0c12729 (github.com)
在3.6以前,为了避免去修改engine层,我们通常是这样实现一个自定义FileUtils
cc::FileUtils::destroyInstance(); // 销毁默认
auto * instance = new NewFileUtils();
instance->init();
CCLOG("NewFileUtils use ");
cc::FileUtils::setDelegate(instance);
// 后续FileUtils::getInstance() 得到的就是自定义的NewFileUtils实例(在iOS上NewFileUtils继承FileUtilsApple,在Android则是继承FileUtilsAndroid)
在3.6,FileUtils::destroyInstance已经是空实现了,我们需要调整成以下方式
cc::FileUtils::setDelegate(nullptr);
auto * instance = new NewFileUtils();
instance->init();
// 后续FileUtils::getInstance() 得到的就是自定义的NewFileUtils实例(在iOS上NewFileUtils继承FileUtilsApple,在Android则是继承FileUtilsAndroid)
修改引擎代码的项目,在升级时总会流下悔恨的泪水,除非老板愿意花钱花时间让你做期间无任何产出的引擎升级
资源加密混淆必须得做,js层面来改性能太差了