Cocos creator 如何读取Unity本地存储(Play
2019-03-03 本文已影响3人
洒一地阳光_217d
cocos如何读取unity本地存储的文件
前提:必须是同一个应用
1、android平台:(必须包名和签名一致)
第一步、获取文件位置:
unity文件存在本地存储的路径:
第1种方法:直接明确路径:
apk安装在内置存储器上时,文件位置是:
unity4版本: "/data/data/pkg-name/shared_prefs/pkg_name.v2.playerprefs.xml";
unity5版本:"/data/data/pkg-name/shared_prefs/pkg_name.xml";
(pkg_name是包名)
apk安装在SD卡存储器上时,文件位置是:
unity4版本: "/sdcard/Android/data/pkg-name/shared_prefs/pkg_name.v2.playerprefs.xml";
unity5版本:"/sdcard/Android/data/pkg-name/shared_prefs/pkg_name.xml";
(pkg_name是包名)
第2种方法:(apk安装在内置存储器时ok,未测试安装在SD卡的情况下)
let filePath = "";
let writablePath = jsb.fileUtils.getWritablePath();
if (/files\//.test(writablePath)) {
// (pkg_name是包名)
// unity 5版本则是:"shared_prefs/pkg_name.xml"
filePath = writablePath.replace(/files\//, "shared_prefs/pkg_name.v2.playerprefs.xml");
}
第二步、使用jsb读取xml文件内容:
jsb.fileUtils.getStringFromFile(filePath);
得到xml文件里内容后,然后可以自己解析,也可以使用第三方xml插件解析。
(楼主是自己解析的,如果有兄弟是用第三方插件解析的,希望可以在下面留言,推荐下哪个插件)
2、ios平台:(必须bundle identifier一致)
第一步、获取文件位置:
先获得Library文件夹路径,这个路径有2种获取方法
第1种:objective-c代码获取
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
// 返回,例:"/var/mobile/Containers/data/Application/B9B904d-EA23-4D23-A3TD-KLH54G54/Library"
NSString *libraryDirectoryPath = [paths objectAtIndex:0];
第2种:使用jsb获取
// 获取可写路径,返回,例:"/var/mobile/Containers/data/Application/B9B904d-EA23-4D23-A3TD-KLH54G54/Documents/"
let writablePath = jsb.fileUtils.getWritablePath();
// 将路径中 "Documents/" 替换成 "Library"
let libraryDirectoryPath = "";
if (/Documents\//.test(writablePath)) {
libraryDirectoryPath = writablePath.replace(/Documents\//, "Library");
}
文件位置:libraryDirectoryPath + "/Preferences/[bundle identifier].plist";
第二步、读取文件.plist文件内容:
// 读取.plist文件内容,得到key-value对象
let valueMap = jsb.fileUtils.getValueMapFromFile(libraryDirectoryPath );