■読み込み
前回やった内容を少し発展させ、inspectorからではなくSQLiteのデータベースファイルからidを参照する。データベースは暫定的に次のようにした。この値を取ってくるには次のようにする。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using UnityEngine.UI; | |
using System.Collections; | |
[ExecuteInEditMode] | |
public class HeaderText : MonoBehaviour { | |
[SerializeField] CategoryDB cDB; | |
private int id; | |
private int oldID = 0; | |
void Start(){ | |
//データーベースにアクセス | |
SqliteDatabase sqlDB = new SqliteDatabase("save.db"); | |
// Select | |
string selectQuery = "select selectingID from User"; | |
DataTable dataTable = sqlDB.ExecuteQuery(selectQuery); | |
//検索 | |
foreach(DataRow dr in dataTable.Rows){ | |
id = (int)dr["selectingID"]; | |
} | |
} | |
void Update () { | |
//IDに変更がない場合は処理をしない | |
if (id == oldID || id == 0) return; | |
//デバッグ用のブール代数を用意 | |
bool isFound = false; | |
//検索 | |
foreach (CategoryDB.CategoryData data in cDB.list){ | |
if(data.id == id){ | |
GetComponent<Text>().text = "「" + data.name + "」"; | |
isFound = true; | |
break; | |
} | |
} | |
//IDの更新 | |
oldID = id; | |
//検索結果をログに表示 | |
if (isFound) { | |
Debug.Log ("指定IDの内容に変更しました。(HeaderText.cs)"); | |
} else { | |
Debug.Log ("指定のIDは見つかりませんでした。内容の変更は行われませんでした。(HeaderText.cs)"); | |
} | |
} | |
} |
これによりデータベースに保存されているIDの内容を表示することが可能となった。
■書き込み
メニューのボタンを押したとき、データベースを更新するようにする。ボタンを押すと、下記のSellectメソッドが呼び出されるようにした。データベースの書き換えは2~6行目で行われている。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void Select(){ | |
//データーベースにアクセス | |
SqliteDatabase sqlDB = new SqliteDatabase("save.db"); | |
//上書き | |
string query = "update User set selectingID = " + id.ToString(); | |
sqlDB.ExecuteNonQuery(query); | |
//ヘッダーの更新 | |
header.ChangeID (id); | |
//メニューの操作 | |
menue.ClickMuenuButton(); | |
} |
■まとめ
ここまでで作った内容は下図である。メニューのボタンの内容はScriptableObjectを参照している。ボタンを押すとデータベースのselectingIDが更新される。ホーム画面上部にある文字はデータベースのselectingIDに応じて内容が変わる。
なお本筋は、NPOIの使い方、ScriptableObjectの使い方、SQLiteの使い方、必要となるエディタ拡張の説明なので、それ以外の部分は説明を割愛した。
0 件のコメント:
コメントを投稿