本次教學筆記所使用的Godot版本為v4.2.1,程式語言為GDScript;SQLite版本為3.12.2
============================================
【安裝資料庫軟體】SQLite
進入DB Browser for SQlite 官網:https://sqlitebrowser.org/dl/,選個適合自己作業系統的安裝檔,像我是使用zip (no installer) for 64的免安裝版。之後依序執行以下步驟就能建立一個簡單的資料庫:
- 新建資料庫:替自己的資料庫取個合適的名字(建議英文)
- Create Table:新增資料表,透過Add添加需要的欄位,並指定好該欄的類型:INTEGER整數、TEXT字串、BLOB可儲存所有類型的數據(ex.圖片)、REAL浮點數。最後將PK(Primary Key主鍵)勾選,方便後續在使用時能擷取特定欄位的資訊。
- Browse Data:印表機圖案右邊有個綠色+按鈕,可新增資料。依序填入數據後點選Apply儲存。
- Save Project:儲存資料庫。
回到Godot,在中間面板最上面的AssetLib搜尋Godot-SQLite,下載並安裝。之後到專案 > 專案設定 > 外掛程式 > 啟用SQLite。啟用後記得重新開啟一次Godot,不然後續編寫程式碼時會有一些無傷大雅但有點煩的紅字報錯跑出來。
【代碼編寫-匯入資料庫】
考量到後續也會實作存讀檔系統,因此先行創建一個用來管理所有資料的腳本(ConfigFile.gd),透過在專案 > 專案設定 > 自動載入時確保該腳本節點在任何情況都會存在(模擬單例模式Singleton)
透過path()找到存放於Database資料夾底下的資料庫檔案
open_db()開啟資料庫
利用query()找到需要的資料,並將查詢結果透過query_result儲存輸出的Array[Dictionary]資料
最後close_db()關閉資料庫
其中,搜索資料時使用的是select "欄位" from "資料表名稱" where "額外條件"。將欄位填入米字等於取得全部欄位的資料,若只想要特定欄位時直接填入欄位名稱。ex. happyPic。之後資料表名稱是picture,然後不指定額外條件所以省略了where的步驟。where可用來篩選特定資料,比如score > 60,多個條件可用and、or串接
提供一個方法,讓其他地方的腳本要存取小生物資料庫時可使用
Part2匯入不同圖片最後改寫成這樣。
GlobalConfigFile是全域腳本的名稱,get_creatureData()取得資料庫檔案,[item]利用for loop批次讀取圖片,["happyPic"]取得該欄位的圖檔名稱
因為只是改寫了載入資料的方式,所以實際呈現上不應該會有其他差異。這樣把動線都規劃好後,之後想要添加幾十、幾百種圖鑑資料都會輕鬆很多。
-------參考資料-------
在Godot中創建和使用SQLite數據庫 - 巽星石(2022/11/23)
Integrating SQLite Into Godot 4.2! Advanced Godot! – FinePointCGI(2023/12/16)
SQLite 入門 – Android Developers(2023/09/18)
SQLite 數據類型 - RUNOOB
============================================
純數據資料用翻譯的方法來做畢竟真的有點蠢,最後還是老實的接觸較常被使用的資料庫軟體啦QQ。畢竟是歷史悠久的軟體,網路上能找到的教學並不少,但想要切實地應用在自己的專案裡還是需要一點時間搞懂到底是怎麼運作的。只是都不曉得現在的胃痛是因為資料看太多,還是單純吃了辣泡菜的關係......