きゅぶろぐ

きゅぶんずの ぶろぐができて べんりだな

Airtableでマスターデータを作ってUnityから読む

ゲームのマスターデータ、何のツールで管理してますか?
Excel? GoogleSpreadsheet?
Airtableっていうめっちゃ便利なサービスがあります。

マスターデータを作る

マスターデータを作ります。
「この列は数字だけ!」とかの制約がかけれたり、Filterがかけれたりしてめっちゃ便利!っていうかもはや普通にDBです。

f:id:kyubuns:20200418122216p:plain

Unityから読む

めっちゃ分かりやすいAPIのドキュメントがあります。
ApiKeyとBase(ドキュメントのID的なもの)もここから見れます。
https://airtable.com/api

GitHub : kyubuns/airtable.net
↑公式からForkして若干改造入れてあります。
AirtableApiClientディレクトリ以下をUnityに突っ込んで、Json.netもどこかから調達してきてください。
そしたら後はこれだけです。

using (var table = new AirtableBase(ApiKey, Base))
{
    string offset = null;
    var response = await table.ListRecords<Player>("Player");
    foreach (var r in response.Records)
    {
        var player = r.Fields;
        Debug.Log($"{player.Lv} - {player.HP}");
    }
}

public class Player
{
    public int Lv;
    public int HP;
}

1回の呼び出しに付き100行までしか取ってこれないので、1テーブルが100行以上になりえるときはこんな感じ。

string offset = null;
do
{
    var response = await table.ListRecords<Player>("Player");
    if (!response.Success) break;
    foreach (var r in response.Records)
    {
        var player = r.Fields;
        Debug.Log($"{player.Lv} - {player.HP}");
    }
} while (offset != null);

注意点

The API is limited to 5 requests per second.

1秒間に5リクエストで制限かかるので、ユーザーが直接読むのには向いてなさそうです。
この制約がキツい場合はお問い合わせくださいって書いてあるので、有料プランだときっと上がるんでしょう。きっと。