基本はここで学びます。
qiita.com
任意のデータ構造を配列で取得できるようになったら、少し汎用的なタイトルデータ取得コードを記述します。
var type = typeof(T);
var titleData = JsonSerializer.Deserialize<T[]>(result.Data[type.Name]);
これを活用して、関数を一つ書けば、Json シリアライズする型ごとに値を取得することができるようになります。
実装は次の通り
using PlayFab; using PlayFab.ClientModels; using UnityEngine; using UnityEngine.Events; using Utf8Json; public class PlayFabTitleData : MonoBehaviour { private void Update() { // Test コードです if (Input.GetKeyDown(KeyCode.A)) { GetTitleData<CubeWalkServer>((titleData) => { foreach (var data in titleData) { Debug.Log($"name = {data.Name}, host = {data.Host}"); } }); } } /// <summary> /// タイトルデータを取得 /// </summary> /// <typeparam name="T">取得したいデータのクラスを指定</typeparam> /// <param name="callback">取得成功時の処理</param> public static void GetTitleData<T>(UnityAction<T[]> callback) { PlayFabClientAPI.GetTitleData(new GetTitleDataRequest { }, result => { var type = typeof(T); var titleData = JsonSerializer.Deserialize<T[]>(result.Data[type.Name]); callback?.Invoke(titleData); }, error => { Debug.LogError($"GetTitleData: Fail...{error.GenerateErrorReport()}"); }); } /// <summary> /// オンラインチャットサーバー情報:タイトルデータ /// </summary> public class CubeWalkServer { public string ID { get; set; } public string Name { get; set; } public string Type { get; set; } public string Host { get; set; } public int Port { get; set; } } }