Cocos2d-x 加载资源路径

2015年01月16日 11:32 0 点赞 0 评论 更新于 2025-11-21 14:33

在开发基于 Cocos2d-x 的应用时,正确设置资源路径是一项重要的工作。最近因项目需求,我对 Cocos2d-x 加载资源路径的设置方法进行了一番研究,下面将详细介绍相关内容。

资源路径的设置方法

在 Cocos2d-x 中,可以使用 CCFileUtils::setResource() 函数(以下简称 setResource 函数)来方便快捷地设置资源路径。接下来,我们先了解该接口的功能和使用方法,以便更好地理解后续内容。

setResource 函数有两个参数:pszZipFileNamepszResPath,分别表示「zip 文件名」和「资源文件路径」。其中,pszResPath 有默认参数 NULL

下面以列表形式展示 setResource 函数使用不同参数时,在模拟器和真机上资源查找方式的差异: | 参数设置 | 模拟器资源读取 | 真机资源读取 | | --- | --- | --- | | setResource(NULL, NULL) | 从 D:/Work7/NEWPLUS/TG3/APP/ 目录读取资源。 | 从 .so 文件的安装目录读取资源。 | | setResource("XXX.zip") | 从 D:/Work7/NEWPLUS/TG3/APP/XXX.zip 文件读取资源。 | 从 .so 文件的安装目录下的 XXX.zip 文件读取资源。 | | setResource(NULL, "/AAA/BBB/") | 从 D:/Work7/AAA/BBB/ 目录读取资源。 | 从 /AAA/BBB/ 目录读取资源。 | | setResource("XXX.zip", "/AAA/BBB/") | 从 D:/Work7/AAA/BBB/XXX.zip 文件读取资源。 | 从 /AAA/BBB/XXX.zip 文件读取资源。 |

注意事项

  • zip 文件找不到的情况:如果 pszZipFileName 参数非 NULL,在调用 setResource 函数时,若找不到对应的 zip 文件,系统会弹出提示框进行提示,同时应用将会从相应的目录读取需要的资源(不再从 zip 文件中读取)。
  • zip 文件中资源缺失的情况:如果 pszZipFileName 参数非 NULL,并且能够找到相应的 zip 文件,但代码中使用的资源文件在 zip 文件中无法找到,此时应用会出现 bug(不会再从相应目录查找资源)。

关于 .so 文件的安装目录,后续会进行详细介绍。

需要说明的是,以上方法是从网上收集整理而来。

本人测试过的有效读取资源方法

经过本人测试,以下方法是最有效的读取资源方式:

std::string fullPath = CCFileUtils::fullPathFromRelativePath("资源相对路径");
CCFileData *fileData = new CCFileData(fullPath.c_str(), "r");
unsigned char* data = fileData->getBuffer();

通过上述代码,我们可以根据资源的相对路径获取其完整路径,然后使用 CCFileData 类来读取文件数据。

作者信息

feifeila

feifeila

共发布了 3994 篇文章