CCUSerDefault是在cocos2d-X框架之中用于存储轻量级的用户数据而准备的,存放在本地的文件之中,是一个xml文件类型。
开发环境为Mac,编译环境为XCode,游戏引擎为Cocos2d-X。
因为刚刚从object-c转过来,真实感受到苹果的封装远远比C++好用多了。单单从#import和 #include去区分就可以看的出来,习惯了#import,看到这个#include
就好纠结啊。再者就是C++的命名空间啊,一开始忘了使用
using namespace cocos2d;
结果导致我使用ccuserDefault半天出不来提示,纠结我半天。首先,先把所需的头文件引入,并且添加命名空间。
#include "MainScene.h"
#include "SimpleAudioEngine.h"
#include <CCData.h>
#include <CCUserDefault.h>
#include <curl.h>
using namespace cocos2d;
using namespace CocosDenshion;
using namespace std;
这个CCUSerDefault可以操作的数据类型有int,double,float,string,bool。有一对set和get方法。这里只是演示string,其他的自己去测试。
//初始化开始的主场景
bool MainScene::init()
{
if (!CCLayer::init()) {
return false;
}
//test
CCUserDefault::sharedUserDefault()->setStringForKey("userName","西门吹雪");
string userName = CCUserDefault::sharedUserDefault()->getStringForKey("userName");
//userName.c_str(),c_str()这个方法是返回字符串的首地址
CCLOG("*****userName %s",userName.c_str());
//CCUserDefault::sharedUserDefault()->flush();
CCUserDefault::sharedUserDefault()->setStringForKey("userName","火云邪神");
//flush()方法是将操作的数据存写到本地的xml文件里面,下次你可以访问取出
CCUserDefault::sharedUserDefault()->flush();
userName = CCUserDefault::sharedUserDefault()->getStringForKey("userName");
CCLOG("*****userName %s",userName.c_str()); }
这里贴出输出结果:
当我现在把set方法注释掉后,依然可以直接从本地的xml文件取出数据,但是只能取出火云邪神的,不能取出西门吹雪。因为火云邪神调用 flush()方法将数据从内存中的栈区取出,写到了本地磁盘。把结果贴图加上:
这里通过 CCUserdefault:: getXMLFilePath()方法取出xml文件的默认地址:
std::string fileName = CCUserDefault::getXMLFilePath();
输出地址:
Cocos2d: fileName /Users/liyongjian/Library/Application Support/iPhone Simulator/6.1/Applications/A8E7758F-8B67-4B34-9CA1-4C0712016182/Library/Caches/UserDefault.xml
然后我去这个地址下看了看,发现找不到 UserDefault.xml 这个文件,但是看到了这个
我的存储内容在这个plist文件里面。