UnityにSQLiteUnityKitを導入テストしてみたのでメモしました。
動作環境
Unity 5.5.3p3
MacOS 10.12.6
準備
SQLiteを導入する際に便利だったアプリケーションを記載します。
DB Browser for SQLite
SQLiteのテーブルを編集、確認する事が出来ます。
コマンドが苦手な方にオススメです。
DB Browser for SQLiteページ
SQLiteUnityKitを取得
GitHubページよりSQLiteを取得します。
GitHub Busta117/SQLiteUnityKit
ターミナルを開いて以下のコマンドで取得
$ git clone https://github.com/Busta117/SQLiteUnityKit.git
データベースファイル作成
ダウンロード完了後はターミナルよりデータベースファイルを作成します。
テーブル作成と値の挿入まで行います。
// プロジェクト内の階層に遷移
$ cd Assets/StreamingAssets/
// 好きなテーブル名でOK!
$ sqlite3 default.db
SQLite version 3.20.1 2017-08-24 16:21:36
Enter ".help" for usage hints.
// テーブル作成
sqlite> create table example (
...> name string,
...> dummy int
...> );
// テーブルに値を挿入
sqlite> insert into example values ("hello world", 1);
// 終了
sqlite> .q
プロジェクトにフォルダ作成
取得したSQLiteを配置するフォルダを作成します。
以下はサンプルです。
Android
AndroidのPluginを入れるフォルダ
SQLite
Scriptsフォルダをキレイにする為にSQLite関連のファイルはここにまとめる
StreamingAssets
このフォルダに入れる事でアプリに直接配置されます。
SQLiteファイルと作成したDBをフォルダに入れる
スクリプトからデータベースを読み込む
次はスクリプトから作成したデータベースの値を読み込むテストをします。
データベースから値を取り出してLogを表示
using UnityEngine;
using System.Collections.Generic;
public class SampleDataBase : MonoBehaviour {
public SqliteDatabase sqlDB;
void Start(){
sqlDB = new SqliteDatabase("default.db");
string query = "SELECT * FROM example";
var dt = sqlDB.ExecuteQuery(query);
string name;
int dummy;
foreach(DataRow dr in dt.Rows){
name = (string)dr["name"];
dummy = (int)dr["dummy"];
Debug.Log("name:" + name.ToString());
Debug.Log("dummy:" + dummy);
}
}
}
ソースコードをGameObjectにアタッチして実行すると正しく値が取れました。
データベースを直接編集しても反映されない時
実装後 DB Browser for SQLiteを使用してStreamingAssets内のデータベースを更新しましたが正しく反映出来ませんでした。
以下フォルダ付近を確認すると複製されたデータベースがあり修正または削除して再複製すると正しく反映されました。
/Users/user_name/Library/Application Support/company_name
参考ページ
Quickstart for SQLite in Unity
[Unity]SQLiteUnityKitに差分アップデート実装してみた