Unity から Airtable に直接つないでデータ取得するメモです。
Airtable の Base と API キーを準備
このような Table を用意しておきます。名前は Sample01 です。
- Data 列
- フィールド名
- Data
- フィールドタイプ
- Single line text
- フィールド名
あわせて、この Base にアクセスできる API キーも準備しておきます。
Unity に Cube を準備
Unity に Cube を準備します。
Cube に CubeEvent.cs を割り当て
Cube に CubeEvent.cs を割り当てます。コードは以下の通りです。
using UnityEngine; using UnityEngine.EventSystems; using System.Collections; // IEnumerator のための参照 using UnityEngine.Networking; // UnityWebRequest のための参照 using System; // Serializable のための参照 using System.Collections.Generic; // List のための参照 public class CubeEvent : MonoBehaviour { // Airtable の Base ID string settingAirtableBaseID = "settingAirtableBaseID"; // Airtable の API キー string settingAirtableAPIKey = "settingAirtableAPIKey"; // Airtable の Table 名 string settingAirtableTable = "Sample01"; // Airtable の view 名 string settingAirtableView = "Grid view"; // 受信した JSON データを Unity で扱うデータにする ResponseData ベースクラス [Serializable] public class ResponseData { public List<ResponseDataRecord> records; } [Serializable] public class ResponseDataRecord { public string id; public string createdTime; public ResponseDataRecordField fields; } // ResponseDataRecordField は Table の列の内容によって変更します [Serializable] public class ResponseDataRecordField { // フィールド名 Data が string 型 public string Data; } void Start() { StartCoroutine("GetAPI"); } IEnumerator GetAPI() { // API URL 作成 string urlAirtableAPI = "https://api.airtable.com/v0/" + settingAirtableBaseID + "/" + settingAirtableTable + "?view=" + settingAirtableView; // API URL を Uri.AbsoluteUri と通して URL パラメータ調整 // 例 ?view=Grid view が ?view=Grid%20view になる urlAirtableAPI = new Uri(urlAirtableAPI).AbsoluteUri; // HTTP リクエストする(GET メソッド) UnityWebRequest を呼び出し UnityWebRequest request = UnityWebRequest.Get(urlAirtableAPI); // API キーを HTTP ヘッダーに設定 request.SetRequestHeader("Authorization", "Bearer " + settingAirtableAPIKey); // リクエスト開始 yield return request.SendWebRequest(); Debug.Log("リクエスト開始"); // 結果によって分岐 switch (request.result) { case UnityWebRequest.Result.InProgress: Debug.Log("リクエスト中"); break; case UnityWebRequest.Result.ProtocolError: Debug.Log("ProtocolError"); Debug.Log($"responseCode : {request.responseCode}"); Debug.Log($"error : {request.error}"); break; case UnityWebRequest.Result.ConnectionError: Debug.Log("ConnectionError"); break; case UnityWebRequest.Result.Success: Debug.Log("リクエスト成功"); // コンソールに表示 Debug.Log($"responseData: {request.downloadHandler.text}"); // ResponseData クラスで Unity で扱えるデータ化 ResponseData response = JsonUtility.FromJson<ResponseData>(request.downloadHandler.text); for (int i = 0; i < response.records.Count; i++) { // 今回の行データ ResponseDataRecord currentLine = response.records[i]; Debug.Log($"Data : {currentLine.fields.Data}"); } break; } } }
こちらの内容で保存します。
// Airtable の Base ID string settingAirtableBaseID = "settingAirtableBaseID"; // Airtable の API キー string settingAirtableAPIKey = "settingAirtableAPIKey";
settingAirtableBaseID には今回動かしたい Airtable の Base ID を入力します。settingAirtableAPIKey には Airtable の API キー を入力します。
動かしてみる
Unity を動かしてみると、Start きっかけで特に操作なしで起動時から動くので、データが取得できて以下のように Data の各値が表示されます!