はじめに
GameDataEditor(以下GDE)はStay At Home Devs LLCによるUnity用のアセットです
43.20ドルで有料販売されていますが、無料版も用意されています。
GDEはPlayersprefと同じように各種変数を保存できますが、保存先としてローカルテキストのほかにGoogleスプレットなどに保存できるのが特徴です。
Googleスプレットに対応したことで複数人でのデータのアップデートが簡単にできたり、暗号化やplayMakerにも対応し、さまざまなアプリで利用が可能です。
今回はGDEの有料版を利用してGoogleスプレット上にあるデータの読み出し、書き込みなどを行いながらGDEの紹介をします。
なお、制限はありますが、無料版でもGoogleスプレットと連携が可能です。
GDE利用のシチュエーション
RPGなどのデータ管理が必要なアプリのデータ管理に利用できます。データが多い場合にGoogleスプレットやエクセルでデータを管理することがありますが、問題となるのがアプリへの適用です。
Sqliteなどにデータをコピーして利用してもいいですが、作ったデータをそのまま利用できたら便利だと思います。
GDEはデータをGoogleスプレットやエクセルで管理しつつ、Unity側ではデータの場所を意識することなく利用可能です。
また、データをプログラマとは別の人間が担当し、必要に応じてGDE側でインポートして利用できます。
ただし、Playerprefの代わりに利用できますが、mbaasのような使い方はできないので注意が必要です。
利用手順
有料版を利用しますが、無料版で作ったデータもそのまま有料版に移行できます。アセットをインストールした後は下記のような流れで利用することになります。
GDEではデータの構造であるschemaを元にしたデータクラスを利用し、Unityのスクリプトから読み書きできます。
実際のデータの場所(テキストやGoogleスプレットなど)を気にすることなく使えるのが利点といえます。
データの扱いについて
扱えるデータ形式(BasicFieldType)は下記の通りです。
データはデータ構造(Schema)を設定してItemとして追加編集していきます。
データのschema作成
GDEの各種メニューは下記のようにインストール後はUnityのメニューとして組み込まれます。
SchemaEditorを起動し、Create New Schema にて新しいデータを設定します。

schemaの作成手順としては、BasicFiledTypeを選択し、フィールド名を設定してAddFieldで追加となります。
今回は武器と防具を登録するため、Schema名を「ARM」、武器、防具の名前をString型でWEP,PROと2つ設定しています。

データクラス作成
GDEではSchemaで設定したデータ構造をクラス化してスクリプトから利用しやすくしています。無料版ではクラスの自動作成機能が使えず、有料版のみの機能となります。

GDEでのデータ作成
schemaを設定したら、実際にデータを入力してみます。データはスプレットなどからも追加できますが、今回はGDE Item Editorを利用します。
データはスキーマで設定したクラスを雛形に増やしていきます。

ItemEditorではスプレットなどからImportしてデータを編集、追加することも可能です。

Schemaで既存のschemaを選択すると追加・編集できます。

Googleスプレット利用設定
GDEはアプリにデータを持ちますが、GoogleスプレットやExcelとの連携も可能です。今回はGoogleスプレットとの連携を行います。
スプレットとの連携ではデータのインポート、エクスポートができるほか、Schemaが変更された場合でもエクスポートすることで随時更新されます。
インポート、エクスポートはSchema,Itemそれぞれのエディタで対応可能です。

Googleスプレットを初めて使う場合はGoogle側の手順に従ってください。
Googleスプレットでのデータの追加編集

ItemEditorでデータを作り、Googleスプレットにエクスポートした状態です。
Schemaで作ったARMを雛形に、Level1,Level2が設定されています。
データ構造もスプレット側で修正可能です。
Googleスプレットと連携できれば、GDE側でインポート・エクスポートする都度、Googleスプレット側も自動更新されます。
スクリプトでデータを読み込む
GDEで作ったデータを読み込むにはGDEのライブラリ初期化をして、データ構造に合わせてクラスを読み込みます。
今回は上記で作ったデータを読み込みます。
- ベースクラス名 ARM
- クラス名 Level1,Level2
- フィールド1 String型 WEP
- フィールド2 String型 PRO
スクリプトからの読み込みは初期化し、クラス指定で取得できるので使いやすいです。
サンプルコード(Inputfieldで読み取り、データ更新、データ読み込み、表示)
using UnityEngine;
using UnityEngine.UI;
//GDE
using GameDataEditor;
public class WButton : MonoBehaviour {
public Text Weptext;
public Text Protext;
public InputField Wepinput;
public InputField Proinput;
//
// GDE Write Data
//
public void WriteData()
{
//GDE初期化
GDEDataManager.Init("gde_data");
//GDE Class 指定取得
GDEARMData arm = new GDEARMData(GDEItemKeys.ARM_Level1);
//Data Edit
arm.WEP = Wepinput.text;
arm.PRO = Proinput.text;
//データ保存
GDEDataManager.Save();
//GDE Class 指定取得
GDEARMData arm = new GDEARMData(GDEItemKeys.ARM_Level1);
//GDE Class ランダム取得
//GDEARMData arm = GDEDataManager.GetRandom();
//GDE Class ALL取得
//List armlist = GDEDataManager.GetAllItems();
//GDE class list表示
//Weptext.text = armlist[1].WEP;
//Protext.text = armlist[1].PRO;
//GDE class 表示
Weptext.text = arm.WEP;
Protext.text = arm.PRO;
}
}
ソースの説明
- GDE用の設定
using GameDataEditor;
- GDE初期化
GDEDataManager.Init("gde_data");
※ gde_dataはGDEがアプリ側に作っているデータ構造です。
- ARM型のLevel1を指定して取得
GDEARMData buso = new GDEARMData(GDEItemKeys.ARM_Level1);
- ARM型のデータをランダム取得
GDEARMData buso = GDEDataManager.GetRandom();
- ARM型の全取得
Listarmlist = GDEDataManager.GetAllItems ();
- データ書き込み
//GDE Class 指定取得 GDEARMData buso = new GDEARMData(GDEItemKeys.ARM_Level1); //Data Edit buso.WEP = "くさりがま"; buso.PRO = "しんしのふく"; //データ保存 GDEDataManager.Save();
おわりに
GameDataEditorを利用することでGoogleスプレットを利用してアプリのデータ管理がスムーズにできるようになりました。データベースを使うまでではない、データ管理はプログラマから離したい等、便利なアセットかと思います。