「Cocos2d-x」UserDefaultについて
UserDefaultについてメモ。
バージョン:cocos2d-x-3.13.1
書くことは、以下の3点。
- UserDefaultの簡単な使い方
- UserDefaultの格納場所
- UserDefault.xmlのファイルパスを変更してみた
UserDefaultの簡単な使い方
UserDefault* _userDef = UserDefault::getInstance(); // データを保存する _userDef->setStringForKey("key1", hogrhoge);//文字 _userDef->setIntegerForKey("key2", 1);//int型 _userDef->setFloatForKey("key3",1.0f);//float型 _userDef->setBoolForKey("key4",true);//bool型 // 保存データを呼出す _userDef->getStringForKey("key1");//文字 _userDef->getIntegerForKey("key2");//int型 _userDef->getFloatForKey("key3");//float型 _userDef->getBoolForKey("key4");//book型
UserDefaultの格納場所
基本的に、Win32の場合、
「C:\Users\ユーザ名\AppData\Local\プロジェクト名\UserDefault.xml」に格納される。
以下のコード書くと、パスが表示される。
cocos2d::log("%s", CCFileUtils::sharedFileUtils()->getWritablePath().c_str());
表示例:C:/Users/shiva/AppData/Local/myGame/
▼リファレンス
cocos2d-x: FileUtilsAndroid Class Reference
んで、CCFileUtils-win32.cppの「getWritablePath」を読んでいたら、
ファイルパスの作り方書いていて勉強になった。
UserDefault.xmlのファイルパスを変更してみた
※できたのはできたけど、何故か書き込みできないから参考にはしないでね☆
「C:\Users\ユーザ名\AppData\Local\プロジェクト名\UserDefault.xml」まで探しに行くの面倒だと思って、ファイルパスの変更ができるのかググってみたけど検索に引っかからなかった。
なので、ソース読んでみた。
「getWritablePath」があるなら、自分でUserDefault.xmlのファイルパスを変更できるだろう...。
「setWritablePath」を探してみたら、
CCFileUtils.cppに「CCFileUtils::sharedFileUtils()->setWritablePath」を見つけた。
さっそく使ってみる。「Resources」フォルダに「SaveData」フォルダ作ってそこに作成できるか検証。
CCFileUtils::sharedFileUtils()->setWritablePath("C:/Android/AndroidGame/Resources/SaveData/");
▼結果:成功
成功はしたが、他のPCでゲーム起動するとパスも異なるのであまりお勧めはしない。
ちなみに、「_(アンダーバー)」を入れると、Resourcesフォルダに「_UserDefault.xml」が作られる。
CCFileUtils::sharedFileUtils()->setWritablePath("_");
これは、CCUserDefault.cppの「void UserDefault::initXMLFilePath()」で、
以下の記述がしているため。
#define XML_FILE_NAME "UserDefault.xml" void UserDefault::initXMLFilePath() { if (! _isFilePathInitialized) { _filePath += FileUtils::getInstance()->getWritablePath() + XML_FILE_NAME; _isFilePathInitialized = true; } }
こんな感じでメモ終了。