cocos2dx 如何递归遍历目录?

  1. 使用接口 FileUtils::fullPathForFilename 在安卓下填入相对目录后返回空,ios正常。
  2. 使用接口 FileUtils::listFilesRecursively 在安卓下递归获取文件目录列表为空,ios正常。

我的需求是获取Resources 目录下某个目录的所有文件(递归)。已经将搜索目录正确设置,Android端的执行不符合预期,无法获取。

cocos2dx 版本 3.17.2

一般自己写一个.txt 把所有资源都记录下来吧;热更就是这么做的;在手机上,在webgl,在pc上路径和 io 都是不通的

我要做资源预加载,项目着急上,我目前就像你说的这么做的。但是感觉不是很优雅,把资源列表读取也要耗时,而且更新资源后又得更新列表,容易遗忘。

我这纯原生app 只考虑Android 和 iOS

哪位有其他解决方案吗?请分享下。

去Android层,写个方法遍历

和mac/ios/windows不一样,安卓包本质是个zip,不好用常规方式遍历内部文件。递归遍历目录这已经不是引擎的功能范畴,但好在JNI提供了assets内的文件操作接口API

以下是个简单案例

    AAssetManager *aAssetManager = CCNS::CC_FILEUTILS::getAssetManager();
    AAssetDir* gameresDir = AAssetManager_openDir(aAssetManager, "xxxx");
    if (gameresDir){
        const char* filename;
        // 使用此方式遍历当前目录
        while ((filename = AAssetDir_getNextFileName(gameresDir)) != nullptr){
                CCLOGINFO(" AAssetDir_getNextFileName %s",filename);

        }
        AAssetDir_close(gameresDir);
    }