Unity 之 读取Cocos本地化数据
发布日期:2021-06-29 19:10:23 浏览次数:2 分类:技术文章

本文共 1805 字,大约阅读时间需要 6 分钟。

Unity 读取Cocos本地化数据 -- 基于IOS

一,需求描述

单机游戏(用户数据存到本地):之前使用Cocos开发的,现在使用Unity开发了。所以需要实现有一个数据(用户资产)继承的需求。


二,尝试实现

读取Unity的PlayerPrefs类在本地的存储文件

(因为Cocos不熟悉,我认为读取到Unity的存储数据和Cocos的数据差不多)

实现步骤:

  1. 在手机上使用PlayerPrefs.Set.. 存储数据;(以“Gold”字段为例)
  2. 在Xcode编写代码如下:
    参考文章:
// 获取路径NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);// 返回,例:"/var/mobile/Containers/data/Application/B9B904d-EA23-4D23-A3TD-KLH54G54/Library"NSString *libraryDirectoryPath = [paths objectAtIndex:0];NSLog(@"读取到的library 路径 %@", libraryDirectoryPath);// 组合字符串 libraryDirectoryPath + "/Preferences/【bundle identifier】.plist"NSString *plistPath = [libraryDirectoryPath stringByAppendingString:@"/Preferences/com.czygame.test.plist"];    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];NSLog(@"读取到的内容%@", data);

测试结果:

2.1.1

  1. 预处理字符串:

    得到字符串之后的处理:可以直接在Xcode中处理,然后回调到Unity中;也可以直接把字符串传给Unity,在Unity中进行处理。

    由于我测试的包名和之前Cocos的 bundle identifier 的是一致的。在得到的字符串中发现的了 Cocos 中保存的字段和 UnityPlayerPrefs.Set..同时出现。😐

    这不就印证了我在本段开始时的猜测吗?(我认为读取到Unity的存储数据和Cocos的数据差不多)

    此时我并没有直接去解析字符串处理(因为我发现它并不是一个标准的Json,应该是打印日志显示不全的问题)

  2. 发现惊喜:

    然后我突然想到了一个假设:

    两边存的数据都以 key:value 的形式出现在 .plist 中,那么可不可以认为它们的存储方式是一致的?

    于是,我直接在Unity中写下代码:
    // "CocosKey" -- 一个确定在Cocos中存储时间的Key(在Unity中没存过) Debug.Log(PlayerPrefs.HasKey("CocosKey"));
    重新打包到手机上,发现得到的日志是:True。


三,得到结论

使用使用Cocos存的数据,竟然和Unity的PlayerPrefs类可以通用。

也就是说如果两个项目的存储数据的字段名和字段意义都一样的话,就不需要做任何的改动。

如:Cocos 使用“gold” 字符串保存用户持有金币数

在Unity中可以直接 PlayerPrefs.GetInt(“gold”); 获取到此用户当前持有金币数

有两个需要注意的点:

  1. 两个bundle identifier必须一致
  2. 转换类型需要正确 (如:上例中的用户金币数存的是int类型,取的时候就需要使用 GetInt(); )

由于我没有Cocos的Android包,所以上述结论我只验证了在IOS端是成立的。

若你有Cocos的Android可以尝试一下是否是同一结论【测试过了,别忘了评论告诉我奥】。
小提示:在AndRoid端测试时,需要保证包名和签名都一致噢。

【原来小丑竟是我自己】

由于不知道两者可以通用,进行了上述的尝试过程,不过还好最后发现了这结论。记录分享,希望此文可以帮助到你,若有什么其他见解或疑问都欢迎评论交流


转载地址:https://czhenya.blog.csdn.net/article/details/116049219 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Xcode 连线打包遇到问题 Unable to install “xxx”
下一篇:Unity 之 关于停止协程的五种方式解析

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月09日 11时18分14秒