Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8901

【Unity】Airtableを使って簡易的なDB管理をする方法【SQLは不要】

$
0
0

こんにちは!
ねこじょーかー(@nekojoker1234)と申します。

Unityでゲームを作ろうとしたときに、DBとしてデータを管理して、そこからデータを引っ張ってくる、といった処理も必要になってくると思います。

数個くらいのデータであれば「まぁ、if文で分岐すればいいか」となりますが、さすがに数十、数百となると手間が増えてやっていられないですよね。

しかし、ちゃんとしたDBを用意するとなると、サーバー・テーブル設計・SQLなどなど、考えることがたくさんあります。

そんな「大規模なDBはいらないけど、ソースコードにベタ書きも嫌だ!」という人のための記事です。

Airtableを使って簡易的なDB管理をする方法

Airtableに登録する

タイトルでネタバレしていますが、まずはAirtableに無料登録しましょう。

Airtable」は、スプレッドシートのような機能が無料で使えるサービスがあり、これをDB代わりに使用することができます。

登録手順はメールアドレスを登録するだけなので割愛しますね。
登録が終わったら、以下の画面が表示されます。

スクリーンショット 2019-11-26 21.18.18.png

テーブルを追加する

先ほどの画像で「Add a base」となっているところをクリックすると、新しいテーブルを作成することができます。

「Start From Scratch」を選択することで、完全に「空」のテーブルになります。

スクリーンショット 2019-11-26 21.23.37.png

レコードを追加する

基本的な使い方はExcelと同じなので、特に操作の説明はしません。

私は以下のようなテーブルを作成しました。

スクリーンショット 2019-11-26 21.26.58.png

一番上に表示されているのが「テーブル名」、左上に表示されているのが「シート名」です。

シート名はプログラム上で使うことになるので、コピーしておいてください。

APIキーを確認する

トップページ右上の「Account」からマイページに行くと、APIキーが「●●●●●●」と表示されているので、カーソルを合わせると具体的なAPIキーが表示されます。

このAPIキーはプログラムで使用するのでコピーしておきましょう。

BaseIDを確認する

まずは以下のページにアクセスしてください。
https://airtable.com/api

「The ID of this base is」となっているところがBaseIDなので、これをコピーしておきましょう。(灰色でぬりつぶしているところです)

スクリーンショット 2019-11-26 21.36.26.png

これでようやくAirtable側の準備が終わったので、次からはUnity側の準備に入ります。

AirtableClientをプロジェクトにインポート

以下で公開されているソースコードを、プロジェクトにインポートしましょう。
csファイルだけで大丈夫です。

https://github.com/yKimisaki/AirtableClient

Utf8Jsonをプロジェクトにインポート

AirtableClientをインポートすると、「Utf8Jsonがないよ!」と怒られるので、Utf8Jsonもインポートしておきます。

https://github.com/neuecc/Utf8Json

するとここで、「unsafeが許可されていません」的なエラーが出て困ることになるので、unityの設定を変更しましょう。

「Edit -> Project Setting」と進んでいき、「unsafe」と検索窓に入力して「Allow 'unsafe' code」を見つけます。

スクリーンショット 2019-11-26 21.48.28.png

このチェックをつけることで、エラーを解消することができます。

処理を実装する

では、実際の処理を実装していきましょう。

サンプルはこんな感じです。

varclient=newAirtableClient("コピーしたAPIキー");var@base=client.GetBase("コピーしたBaseID");varallRows=@base.LoadTableAsync<"コピーしたシート名">().Result;foreach(varrowinallRows){// 1レコードずつ取り出す処理 }

コピーしたシート名の型のエンティティが返ってくるので、シート名をクラス名にして、各列名をプロパティ名にします。

publicclassCharacterParam{publicstringName;publicintAttack;publicintDefence;publicintHitPoint;}

完成

めでたく完成です!

「応答なし」で固まってしまう場合は、以下のケースが考えられるので、チェックしてみてください!

  • APIキーが間違っている
  • BaseIDが間違っている
  • シート名とエンティティ名が一致していない
  • オフラインになっている

補足

最後に念のため、公式で提供されているAPIとドキュメントをリンクとして貼っておきます。

公式API
https://github.com/ngocnicholas/airtable.net

公式ドキュメント
https://github.com/ngocnicholas/airtable.net/wiki/Documentation

あわせて読みたい

筆者のブログ:https://nekojokerblog.com


Viewing all articles
Browse latest Browse all 8901

Trending Articles