この記事でのバージョン
Unity 2018.4.8f1
PlayFab SDK 2.77.191029
はじめに
今回はUnityでPlayFabのタイトルデータを使ってみようという感じの記事です!
ちなみに、PlayFabとはなんぞや?という方は以下の記事を参照の事。
ざっくり言うとサーバーサイドが関わる事を楽して実装出来るサービスです。
しかも、無料で始める事も可能ですし、有料プランでも1000MAUまでは無料と
「ユーザが全然増えないのにお金だけ払う」みたいな事がありません。
なので個人開発でも使い始めやすいですし、Microsoftのサービスという安心感まであります。
Indie Plan、1,000 MAU まで無料だし、それを超えて有料になっても 100,000 MAU までは月額 $99 というお手頃価格なので個人や小規模なチームの開発にとても良いと思います🙂
— 南@エンジニア兼ティーアドバイザー (@_y_minami) 2019年11月14日
カジュアルなゲームなら機能制限がある代わりに MAU が何人でも完全無料の Essentials Plan でも良し☺️ https://t.co/TzPHB2g3ZR
なお、本記事は以下の導入やログイン処理が済んでいる前提になりますので、あしからず。
タイトルデータとは
そもそもPlayFabにおけるタイトルとは、ゲームタイトルの事なので、
タイトルデータは各ゲームごとのデータという意味になります。
例えば「敵の能力値」や「ステージの累計数」のようにどのユーザでも同じ値の物に使います。
ちなみに、上記の通りタイトルデータは誰でも共通の値なので、
ゲーム側から値を送信して変更するという使い方はしません。
そういうゲーム側から値を送信して変更する「ユーザの名前」や「クリアしたステージ」のような
各ユーザで異なる物はユーザデータと言い、これもPlayFabで扱えるので、いずれ記事にする予定です。
記事にしました!
さらにランキングやゲーム内通貨を扱う機能等もあるようなので、これもいずれ記事にする予定です。
記事にしました!
タイトルデータの設定
タイトルデータの設定はブラウザ上で行います。
なお、Window/PlayFab/Editor Extensionsで開けるウィンドウの右上にある
GAME MANAGERをクリックすると、設定用のページを開けます。
設定箇所は左側にある「参加/コンテンツ」のページ内上部にある「タイトルデータ」です。
キーと値を入力し、「タイトルデータを保存」を押すだけで設定完了。
また、Jsonでの設定も可能です。
ちなみに同ページにあるタイトル内部データはサーバー上でのみ使われるデータで、今回は使いません。
タイトルデータの取得
次に設定したタイトルデータの取得方法ですが、
まず、以前の記事で紹介したような感じでログイン処理を先に行います。
そしてその後は、GetTitleDataRequestのインスタンスを生成し、
PlayFabClientAPI.GetTitleDataにそれプラス、成功時と失敗時のデリゲートを渡すだけ。
using PlayFab; using PlayFab.ClientModels; using UnityEngine; using UnityEngine.UI; /// <summary> /// タイトルデータを取得するサンプル /// </summary> public class TitleDataSample : MonoBehaviour { [SerializeField] private Text _text = default; //================================================================================= //取得 //================================================================================= /// <summary> /// タイトルデータの取得 /// </summary> public void GetTitleData() { //GetTitleDataRequestのインスタンスを生成 var request = new GetTitleDataRequest(); //タイトルデータ取得開始 Debug.Log($"タイトルデータの取得開始"); PlayFabClientAPI.GetTitleData(request, OnSuccess, OnError); } //================================================================================= //取得結果 //================================================================================= //タイトルデータの取得に成功 private void OnSuccess(GetTitleDataResult result) { Debug.Log($"タイトルデータの取得に成功しました"); //result.Data(Dictionary)に全タイトルデータが入っていて、Keyを文字列で指定すると値が取り出せる _text.text = $"Test1 : {result.Data["Test1"]}\nTest2 : {result.Data["Test2"]}"; } //タイトルデータの取得に失敗 private void OnError(PlayFabError error) { Debug.LogWarning($"タイトルデータの取得に失敗しました : {error.GenerateErrorReport()}"); } }
実際に使ってみると以下のような感じで、
ブラウザ上で値を変えると、Unity上でも取得出来る値が変わっているのが分かると思います。
ただし、上記の例では変更後に即時反映されていますが、
反映されるまでに最大15分かかる可能性がある点には注意が必要です。
おわりに
今回の記事のために初めてPlayFabでタイトルデータを使ってみましたが、
びっくりするほど簡単に設定や取得の実装が行えました。
タイトルデータだけでも用途は多岐に渡るので、これだけでPlayFabを使う理由になり得ると思います。
なお、前述したように他にも様々な機能があるので、これからも試して記事にしていきたいと思います。
参考