在U3D中使用Sqlite做配置数据存取的靠谱做法

前端之家收集整理的这篇文章主要介绍了在U3D中使用Sqlite做配置数据存取的靠谱做法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这几天为了做这个,在网上查了很多资料,其实都是不靠谱的,大多数人都是复制粘贴来教育别人,误导子民。。。。


在iphone和android下都亲自调试过了,我这个比较靠谱:


怎么使用sqlite网上到处都是,现在只讲两点网上没怎概括到的坑。

一、怎么让手机能使用sqlite

二、怎么在打包时将db文件放在合适位置,然后代码里怎么加载到合适的路径。

三、怎么把策划的csv转换成sqlite db


操作方法

在Assets目录下新建Plugins,把Mono.Data.dll、Mono.Data.sqlite.dll、System.Data.dll放到这层目录下,然后在这层目录下建立Android,再将libsqlite3.so放到Android目录下,最后再在这个Android目录下创建assets目录,然后将.db文件放于此,如果是苹果包则在Assets目录下创建StreamingAssets目录,把db放到这个下面,我试过各种路径存放和试剥离不需要的dll,都不行,必须按我这个方法搞,我搞了几天才摸索出来的啊,至于怎么把csv转换到db里去,方法如下:


D:\sqlite3>sqlite3.exe CangLong.db
sqlite> .separator ','
sqlite> .import Skill.csv Skill


加载部分的代码

void Start ()
{
Instance = this;




if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.OSXEditor)
{
LocalDBFullPath = Application.dataPath + "/Plugins/Android/assets/" + DBTableStruct.DBName;
}
else
{
if (Application.platform == RuntimePlatform.Android)
{
LocalDBFullPath = Application.persistentDataPath + "/" + DBTableStruct.DBName;
if (!File.Exists(LocalDBFullPath))
{
WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/" + DBTableStruct.DBName);
while (!loadDB.isDone) { }


File.WriteAllBytes(LocalDBFullPath,loadDB.bytes);


}
}
else
{
if (Application.platform == RuntimePlatform.IPhonePlayer)
{
LocalDBFullPath = Application.dataPath +"/Raw/" + DBTableStruct.DBName;
if(!File.Exists(LocalDBFullPath))
{
NGUIDebug.Log("Not Exists db !!!!!!");
return;
}
}
else
{
LocalDBFullPath = "";
}
}
}

//NGUIDebug.Log (LocalDBFullPath);

LoadDbToCache(LocalDBFullPath);
}


我的环境是:unity 4.3 sqlite3 android

sqlite3下载:http://pan.baidu.com/s/1jGoRlP0

我已经打配置好的文件放在网盘,自己下载:

http://pan.baidu.com/s/1ntDN7nz

猜你在找的Sqlite相关文章