天天看点

unity 连接 android 数据库 sqlite 解决方案

unity 连接 android 数据库 sqlite 解决方案

被网上各种转来转去的教程烦死了……如果你们看到这个教程我就默认你们运气好吧。

1、unity配置内容

你需要sqlite3.dll ,Mono.Data.Sqlite.dll,两个。一般来说你已经绝望地找到我这个教程的时候,这两个个东西你应该都搞到了,如果没搞到,就自己去找找教程。

将这两个放在unity的Assets/Plugins下,没有这个文件夹就创建一个。

紧接着你需要libsqlite3.so,将它放在Assets/Plugins/Android下,如果没有这个文件夹就创建一个。并且按我下面的图片来修改这东西的配置。

将一个在电脑上已经创建好的数据库放在Assets/Plugins/Android/asstes下,当然如果你想用SqliteConnection.CreateFile我也不反对,你可以自己尝试。

最后你的配置大概是这个样子:

unity 连接 android 数据库 sqlite 解决方案
unity 连接 android 数据库 sqlite 解决方案

2、数据库构造

看得懂看不懂随缘吧,但是就是这样实现的

public SQLiteHelper(string strs)
    {
        string dataSandBoxPath="";

#if UNITY_EDITOR
//这玩意表示当在unity运行时
        dataSandBoxPath = "data source="+ Application.dataPath +"/DataSave" + strs + ".db";
        //文件名字自己起
#endif

#if UNITY_ANDROID
        //安卓上运行时
        dataSandBoxPath =  Application.persistentDataPath + "/DataSave" + strs + ".db";
        //这是你安卓的路径
        if (!Directory.Exists(Application.persistentDataPath))
        {
            Directory.CreateDirectory(Application.persistentDataPath);
        }
#endif
        
        try
        {
            WWW loadWWW = new WWW("jar:file://" + Application.dataPath + "!/assets/DataSave" + strs + ".db");
      
            if (!File.Exists(dataSandBoxPath))
            {
                while(!loadWWW.isDone)
                {
                //如果你用www创建数据库,这个不能省
                }

                File.WriteAllBytes(dataSandBoxPath,loadWWW.bytes);
                //自己研究
            }


#if UNITY_EDITOR
            dbConnection = new SqliteConnection(dataSandBoxPath);
#endif

#if UNITY_ANDROID
            dbConnection = new SqliteConnection("URI=file:" + dataSandBoxPath);
            //安卓的路径
#endif
            dbConnection.Open();


        }
        catch (Exception e)
        {
            
        }
    }