2017-07-14 111 views
0

我發現如何在cocos2dx中存儲一個值。這是我發現的方式:Cocos2dx:無法存儲數據?

UserDefault *def = UserDefault::getInstance(); 

def->setIntegerForKey("HIGHSCORE", highscore); // highscore = 100 

def->flush(); 

但是當我通過該鍵獲得價值,我仍然得到0:

auto val = def->getIntegerForKey("HIGHSCORE"); 

名爲「UserDefault.xml」的文件在AppData目錄中創建windowbut它沒有數據。我必須重寫flush()函數來保存該文件中的數據嗎?

+1

請提供[mcve]。我不知道任何關於cocos2dx的信息,但它有點令人驚訝,你用一個關鍵的「HIGHSCORE」編寫,但用鑰匙「HIGHSCORE FLAPPY」讀取'' – user463035818

+0

抱歉,這是我的錯。我寫和讀在同一個鍵,但它仍然返回0,即使我已經設置了它的值 –

回答

0

下面的代碼在兩個開發平臺(窗口和MacOSX上)

保存數據做工精細:

UserDefault* _userDef = UserDefault::getInstance(); 
_userDef->setIntegerForKey("HIGHSCORE", score); 
_userDef->flush(); 

檢索數據:

int current_score= _userDef->getIntegerForKey("HIGHSCORE"); 

要訪問您的XML文件中的資源管理器:

CCLOG(_userDef->getXMLFilePath().c_str()); 

.xml文件的此打印位置,user_nameapp_name根據您的用戶名和應用程序名稱而有所不同。

C:/Users/user_name/AppData/Local/app_name/UserDefault.xml

+0

我以你指示的方式做了,但它沒有工作,XML文件仍然沒有數據。 –

+0

我看不到在flush()函數中實現的任何東西。我應該重寫它嗎? –

+0

'UserData'具有特定於平臺的實現,我認爲'flush()'只在Mac和IOS中需要 – Aryan