tft每日頭條

 > 科技

 > unity怎麼引用mysqldata

unity怎麼引用mysqldata

科技 更新时间:2024-12-16 14:54:28

unity怎麼引用mysqldata? SQLiteDB sqLiteDb = new SQLiteDB(); string Filename = Application.streamingAssetsPath "/gameSql.db"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } sqLiteDb.Open(filename);,下面我們就來聊聊關于unity怎麼引用mysqldata?接下來我們就一起去了解一下吧!

unity怎麼引用mysqldata(Unity使用SQLite數據庫存儲本地數據)1

unity怎麼引用mysqldata

前言
  • 單機遊戲開發過程中,一款高效便捷的本地數據存儲庫一定是必不可少的。今天介紹unity結合SQLite數據庫來完成本地數據的存儲。
開發環境
  • 引擎:Unity 2018.4.16f1
  • 插件:SQLitekit
SQLite的優勢
  • SQLite是一種嵌入式數據庫,它的數據庫就是一個文件。
  • 基于sqlitekit可實現跨平台本地數據存儲,不用過多考慮跨平台問題
  • 基于sqlitekit可實現數據加密存儲,能有效的提高本地數據的安全
  • 實現了自給自足的、無服務器的、零配置的、事務性的 SQL 數據庫引擎
相關邏輯及關鍵代碼
  • 創建db庫文件:在編輯器模式下創建屬于自己工程的db庫文件,将其放入StreamingAssets文件夾下,便于後續開發以及打包對應平台後将庫文件移植到對應平台的可讀可寫文件夾下。

SQLiteDB sqLiteDb = new SQLiteDB(); string Filename = Application.streamingAssetsPath "/gameSql.db"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } sqLiteDb.Open(filename);

  • 創建數據表:根據需求創建一張用于存儲數據的表單,創建成功後相應的數據就可通過增删改查來修改表内的數據内容了。

//id INTEGER PRIMARY KEY設置自增Id,DataKey BIGINT, Data BLOB,Size INT表示 字段名稱 字段類型,字段名稱 字段類型,字段名稱 字段類型 string query_create = $"{CREATE TABLE IF NOT EXISTS}{表名}(id INTEGER PRIMARY KEY, DataKey BIGINT, Data BLOB,Size INT);"; SQLiteQuery query = new SQLiteQuery(sqLiteDb, password); query.Step(); query.Release(); query = new SQLiteQuery(sqLiteDb, queryCreate); query.Step(); query.Release();

  • 數據表内插入數據:向已經創建好的表内插入一行新的數據

string data = "需要存儲的數據"; long id string queryInsert = $"INSERT INTO{tableName} (DataKey,Data) VALUES(?,?);"; SQLiteQuery query = new SQLiteQuery(sqLiteDb, password); query.Step(); query.Release(); query = new SQLiteQuery(sqLiteDb, queryInsert); query.Bind(id); query.Bind(data); query.Step(); query.Release(); netData.OnRecycling();

  • 更新數據表内已有的數據:表内已有存儲好的數據,對其數據進行更新修改

long id = 存儲數據的key值 string data = "需要存儲的數據"; string query_update = $"UPDATE {表名} SET Data = ? WHERE DataKey = ?;";// SQLiteQuery query = new SQLiteQuery(sqLiteDb, password); query.Step(); query.Release(); query = new SQLiteQuery(sqLiteDb, query_update); query.Bind(data); query.Bind(id); query.Step(); query.Release();

  • 查找數據表内的數據:查詢數據表内的數據内容,未查詢到數據時返回空數據

string value = string.Empty; long id = 存儲數據的key值 //若删除 WHERE DataKey = ?将查詢整張表内的數據 string query_select = $"SELECT * FROM {表名} WHERE DataKey = ?;"; SQLiteQuery query = new SQLiteQuery(sqLiteDb, password); query.Step(); query.Release(); query = new SQLiteQuery(sqLiteDb, query_select); query.Bind(id); if (query.Step()) { value = query.GetBlob("Data"); } query.Release();

  • 删除數據表内的數據:将數據表内的數據删除掉(删除有風險,謹防删庫跑路事件發送)。

long id = 存儲數據的key值 //若删除 WHERE DataKey = ?将删除整張表内的數據 string query_delete = $"DELETE FROM {表名} WHERE DataKey = ?;"; SQLiteQuery query = new SQLiteQuery(sqLiteDb, password); query.Step(); query.Release(); query = new SQLiteQuery(sqLiteDb, query_delete); query.Bind(id); query.Step(); query.Release();

  • 關閉數據數據庫:退出程序時記得将數據庫關閉釋放

sqLiteDb.Close();

  • 打包後安卓和ios移動平台需要将db文件放入可讀可寫文件夾下

string outFile = string.Empty; #if UNITY_ANDROID outFile = Application.persistentDataPath "/gameSql.db"; #elif UNITY_IPHONE outFile = "file://" Application.persistentDataPath "/gameSql.db"; #endif string resPath = Application.streamingAssetsPath "/gameSql.db"; if (File.Exists(outFile)) File.Delete(outFile); UnityWebrequest request = UnityWebRequest.Get(resPath); request.timeout = 30; yield return request.SendWebRequest(); System.IO.File.WriteAllBytes(outFile,request.downloadHandler.data);

結束語
  • 靈活運用sqlitekit能使自己的本地數據存儲更加便利,後續會介紹sqlitekit和protobuf結合在Unity中的使用。
,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved