IOS中Cocos2d-x UserDefault数据的路径/位置?

Posted

技术标签:

【中文标题】IOS中Cocos2d-x UserDefault数据的路径/位置?【英文标题】:Path / Location of Cocos2d-x UserDefault data in IOS? 【发布时间】:2021-05-30 18:16:24 【问题描述】:

我的任务是将使用 Cocos2d-x 制作的 ios 游戏迁移到 Unity。我遇到的问题之一是我不知道 Cocos2d-x 将用户保存的数据写入哪里。应用程序的 Unity 版本需要访问该数据,以便用户不会丢失他们的进度。

Cocos2d-x 应用程序使用以下方式保存其数据:userDefault->setIntegerForKey("coins", 35);

有人知道用户保存的数据存储在什么路径/位置吗?有什么办法可以找出来吗?我已经尝试通过Window > Devices and Simulators > Installed Apps 在 xcode 上查看它,但该应用未列出。

任何帮助将不胜感激。谢谢。

【问题讨论】:

在 Unity 中,您可以尝试使用 PlayerPrefs,它基本上是 iOS NSUserDefaults 的包装器。 PlayerPrefs.GetInt("coins") 是否返回从 cocos2d-x 保存的值? @Dalmas 它确实有效!谢谢你! 【参考方案1】:

在 cocos2d-x v4 中:

// write string
[[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithUTF8String:value.c_str()] forKey:[NSString stringWithUTF8String:pKey]];

// read string
NSString *str = [[NSUserDefaults standardUserDefaults] stringForKey:[NSString stringWithUTF8String:pKey]];

// read integer
NSNumber *value = [[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithUTF8String:pKey]];

在 V 2.1.2 之前,信息存储在 UserDefault.xml 中

#define XML_FILE_NAME "UserDefault.xml"

#ifdef KEEP_COMPATABILITY
    if (! _isFilePathInitialized)
    
        // xml file is stored in cache directory before 2.1.2
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        _filePath = [documentsDirectory UTF8String];
        _filePath.append("/");

       _filePath +=  XML_FILE_NAME;
      _isFilePathInitialized = true;
    
#endif

【讨论】:

以上是关于IOS中Cocos2d-x UserDefault数据的路径/位置?的主要内容,如果未能解决你的问题,请参考以下文章

Cocos2d-x v3.3中UserDefault保存的XML文件位置

关于Cocos2d-x中数据的存储提取和类型转换

Part 14:Cocos2d-x开发实战-Cocos2d-x文件访问-关东升-专题视频课程

关于Cocos2d-x的数据存储

iOS开发小技巧--userdefault存储复杂数据(image为例)

ios 解决数据请求json解析字典后,由于java某些类库转换json字符串后出现键值为<null>无法保存在userDefault的问题