1

最近我遇到了 pugiXml 的一个大问题(在 cocos2d-x 引擎中使用)。

不久,我做了一个问答游戏(在提到的 Cocos2d-x 中)。我将我的问题(和其他一些数据)保存在一个 Xml 文件中。在新游戏中,它们会被解析并插入字典。如果回答了一个问题,则将一个指示答案的短字符串(无论它是否好 - 是/否)插入到该 Xml 文件中(在该特定问题下方)。后来,我使用这些数据来显示统计数据(我计算了回答好的问题的百分比 - 这是计算 Y 的数量除以问题的数量,再乘以 100)。

我用:

CCFileUtils::sharedFileUtils()->fullPathForFilename(o_QA);

获取文件及以后

pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "rb", &bufferSize);

将文件放入缓冲区并

pugi::xml_parse_result result = doc.load_buffer(pBuffer,bufferSize);

解析数据并开始处理它。

最后,我将文件保存为:

doc.save_file(fullPath.c_str());

安卓:

  • 它运行良好,尽管我不得不将带有问题的文件复制到 /data/data/app/Files/ 。尽管如此,它仍在许多设备上进行更改。

IOS:

  • 不幸的是,在 iOS 上它不起作用。数据被加载和解析(这意味着我可以真正玩游戏),但它们没有被保存。我尝试将文件移动到其他文件夹(从 Resources/Documents 开始,然后是主 Resources 文件夹、Resources/Library/Application Support)。它仍然没有保存数据,我不知道该怎么做。结果是我的统计数据没有被很好地计算(无论您如何回答问题 - 所有这些都是错误的,因为 Xml 文件没有被更新)。

有没有人遇到过类似的问题?你能帮我么?

4

1 回答 1

1

我在自己的应用程序中做类似的事情,同时使用 pugixml 和 cocos2d-x。所以我可以确认这种组合效果很好。

相反,因为在 iOS 上,您不能同时从应用程序包读取和写入数据(这是只读的),您需要在可写文档目录中实现一个简单的检查 - 如果您在那里保存了文件,请加载它,如果没有,请从应用程序包中加载。

因此,从本质上讲,如果您保存的文件名是“my_save.xml”,那么这里是一个示例流程:

1)通过连接可写文件夹路径+您的文件名,为可写文件夹中的保存文件构建路径。CCFileUtils 应该有类似 getWritablePath() 的东西。

2)如果文件夹中存在该文件,则加载它。否则,执行3)。

3) 使用 CCFileUtils::sharedFileUtils()->fullPathForFilename() 从应用程序包中构建原始数据文件的路径。从那里加载文件。

要保存,只需执行步骤 1 并将文件保存在那里。

于 2013-10-03T20:46:51.517 回答