小虾米资讯

AD1
当前位置:网站首页 / android / 正文

android:unity3d在各环境下(Android/iOS)读取sqlite数据库

2022-01-09 03:40:16 / 我要吐槽 查看是否已被百度收录 查看是否已被谷歌收录 查看是否已被搜狗收录 查看是否已被360收录
AD2
网上别的贴子都不用看了,一个有用的都没有,大多语焉不详,或者就是自己都不求甚解,把别人的贴子一转,自己都没测试过,爬坑了两天,一定搞定Andriod,接下来因为自己犯了二,又花了一天搞定iOS,其实iOS和Andriod的原理都差不多

public void ConnectionDB() { if (conn == null) { string path = "/Data.db"; if(Application.platform == RuntimePlatform.IPhonePlayer) { path = Application.persistentDataPath + path; if(!File.Exists(path)) { WWW loadDB = new WWW("file://" + Application.streamingAssetsPath + "/Data.db"); while (!loadDB.isDone) { } File.WriteAllBytes("file://" + path, loadDB.bytes); WWW downDB = new WWW(path); while (!downDB.isDone) { } } path = "data source=" + path; } else if(Application.platform == RuntimePlatform.Android) { path = Application.persistentDataPath + path; if (!File.Exists(path)) { WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/Data.db"); //yield return loadDB; while (!loadDB.isDone) { } /* FileStream fsDB = File.Create(path); fsDB.Write(loadDB.bytes, 0, loadDB.bytes.Length); fsDB.Flush(); fsDB.Close(); */ File.WriteAllBytes(path, loadDB.bytes); WWW downDB = new WWW("file://" + path); while(!downDB.isDone) { } } else { /* File.Delete(path); WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/Assets/Data/Data.db"); File.WriteAllBytes(path, loadDB.bytes); */ } path = "URI=file:" + path; } else { path = "data source=" + Application.dataPath + "/StreamingAssets" + path; } conn = new SqliteConnection(path); } else { Debug.Log("数据库未连接"); } }

注意这里的db文件要放在Assets/StreamingAssets文件夹下

感谢一篇贴子的参考资料,假如5楼的原贴链接被吞了的话,可以直接看6楼的原贴内容

blog.csdn.net/qq_18427785/article/details/53392599http://www.jianshu.com/p/a3ec1a2649c6

Unity3d的Resource、AssetBundle与手游动态更新的报告,在这里分享一下,希望能够对各位用Unity的朋友有些许帮助。目录:1.Unity的资源数据加载2.Resource、StreamingAsset文件夹,安装后的路径(Android,iOS)3.Unity在打包和安装的时候怎么处理persistentDataPath4.Unity的Android和IOS上相关的目录结构5.Unity常用目录对应的Android && iOS平台地址用妹子分割一下目录与主体。。。1.Unity的资源数据加载 - Resources、AssetBundle、StreamingAsset、PersistentDataPathResources- 打包集成到.asset文件里面及引用的资源as后se一个文件里面面- 主线程加载- 想要动态更新资源则不考虑AssetBundle- unity定义的二进制文件类型- 用WWW类下载StreamingAssets- 可读不可写- 内容限制 - 无- 只能用WWW类下载PersistentDataPath目录下- 可读可写- 内容限制 - 无- 清除手机缓存文件会一并清理这里的东西- 随意弄,可作为本地目录让WWW下载、也可以自己用FileInfo乱整2.Resource、StreamingAsset文件夹,安装后的路径(Android,iOS)StreamingAsset- iOS : Application.dataPath + /Raw- Android : jar:file:// + Application.dataPath + !/assets/Resources- 打包成一个Asset文件3.Unity在打包和安装的时候怎么处理PersistentDataPath- PersistentDataPath- 就是com.**.**/files 的路径而已(打过APK包的应该都明白吧)4.Unity的Android和IOS上相关的目录结构Android:- assets 游戏内容相关的都在这里了- lib JNI相关的东西- META-INF Java包跟rar包的区别- res 图标之类的- AndroidManifest.xml Android配置文件- classes.dex Java虚拟机runtime的东西- resources.arsc Java编译后的二进制文件IOS:- level0/level1… Scene- sharedassets0/shaedassets1/… Scene相关的东西- Managed 脚本编译后的dll- resources.assets Resources里面的东西- Raw StreamingAssets里面的东西5. Unity常用目录对应的Android && iOS平台地址IOS:Application.dataPath : Application/xxxxx/xxx.app/DataApplication.streamingAssetsPath : Application/xxxxx/xxx.app/Data/RawApplication.persistentDataPath : Application/xxxxx/DocumentsApplication.temporaryCachePath : Application/xxxxx/Library/CachesAndroid:Application.dataPath : /data/app/xxx.xxx.xxx.apkApplication.streamingAssetsPath : jar:file:///data/app/xxx.xxx.xxx.apk/!/assetsApplication.persistentDataPath : /data/data/xxx.xxx.xxx/filesApplication.temporaryCachePath : /data/data/xxx.xxx.xxx/cache在看到这篇文章的使用,使用了unity3d 5.x+ 版本读取二进制文件,官方给出的解释方案为:在使用Application.streamingAssetsPath部分的时候本地读取使用io进行读取,服务器加载使用www加载:代码样例:IEnumeratorLoadFile() {stringresult;if(filePath.Contains("://")) {WWWwww=newWWW(filePath);yieldreturnwww;result=http://www.text;}elseresult=System.IO.File.ReadAllText(filePath);Debug.Log("result:"+result);}void start(){StartCoroutine(Example());}作者:JumboWu链接:https://www.jianshu.com/p/a3ec1a2649c6來源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

File.WriteAllBytes(path, loadDB.bytes); WWW downDB = new WWW("file://" + path);这两句应该 这么写

楼主可以帮我看看这个问题吗,救命哇sos

Powered By © 小虾米资讯 2015

(本站部分文章来源于网络或网友爆料,不代表本站观点,如有侵权请联系及时删除 )