UnityでPlayFabを使い始める方法（インストール〜匿名ログイン）

Unite2019でPlayFabの講演を聞き、興味を持ったのでMicrosoftブースで色々伺ってきました。

講演資料はこちら -> https://www.slideshare.net/UnityTechnologiesJapan002/unite-tokyo-2019unity-playfab-liveops

自分が作ろうとしているスマホゲームで活用できそうだったので、とりあえず触ってみようと思います。

### 環境
* 書いた日 2019/09/29
* Unity 2019.1.5f1
* macOS Mojave 10.14.6
* PlayFab SDK 2.74.190916

## PlayFabに登録

まずはアカウント登録が必要なのでサインアップします。

https://azure.microsoft.com/ja-jp/services/playfab/

こちらから登録してログイン。

PlayFabはAzureのいちサービスっぽいけれど、Azureポータル経由せずに利用できるので楽ですね。

## PlayFabの価格

* Essentials(無料プラン)
* Indie Studio($99/月)
* Professional($299/月〜)
* Enterprise(お問い合わせ)

こんな分類みたいです。
私は個人開発なので無料〜インディープランでうまくやりくりする感じになりそうです。
無料でも結構な機能が使えるっぽいですし、インディープランも1000MAUまでは無料らしいので活用していきましょう。

> 料金について詳しくはこちら https://playfab.com/pricing/

## スタジオとタイトルを作る

PlayFabではいきなりゲームを登録する訳ではなく、スタジオとタイトル（ゲーム）を順番に登録していきます。

私は個人開発なので、 `naichilab` というスタジオ(赤枠)と `playfab-sample-game` というタイトル(緑枠)を登録しました。

<img width="789" alt="スクリーンショット 2019-09-29 16.15.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/864b6629-59c5-652d-e6d6-7b99c28dd6c3.png">

スタジオ単位でメンバーや管理者を設定したり、前述のプラン契約ができるようです。

当然ですが、スタジオ内に複数タイトルを登録することもできます。

## タイトルのダッシュボードへ

タイトルをクリックするとダッシュボードに移動します。

<img width="1424" alt="スクリーンショット 2019-09-29 16.21.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/b7e3ea3a-8959-2169-e0cd-18aa0d3f1922.png">

まだ空っぽですね。

## SDKのダウンロード

ダッシュボード右上のヘルプからクイックスタートへ

![スクリーンショット 2019-09-29 16.25.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/61537a01-3ba2-7f26-806b-d9e6d71b6ef5.png)

SDKのダウンロードリンクがあるのでUnity用をダウンロードします。

![スクリーンショット 2019-09-29 16.26.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/9eb187e4-f0ac-8b41-c372-461aead3f1b1.png)

> Unity3Dっていつの呼び方・・・

エディター拡張機能をダウンロードしておきます。

`PlayFabEditorExtensions.unitypackage` が手に入りました。

## Unityへインポート

空のUnityプロジェクトを作成し、先ほどのunitypackageをインポート

目立つウィンドウが出てくる。

めっちゃ分かりづらいけどこれは登録画面で、すでにブラウザで登録済みなのでログイン画面へ切り替える。
![スクリーンショット 2019-09-29 16.38.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/32afa996-4211-6ca3-e1d6-c158d5bded8d.png)

ID/PASSを入力してログイン

![スクリーンショット 2019-09-29 16.40.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/d1cbda75-b3fc-8aeb-2fed-b0a5780ce5fd.png)

## UnityにPlayFabSDKをインポート

Install PlayFab SDK

![スクリーンショット 2019-09-29 16.41.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/010bcf86-a7f1-6980-d7c5-b8422c33e244.png)

押しても反応なし・・・

何度か押してたらPlayFabSdkというフォルダが出来ていました。

![スクリーンショット 2019-09-29 17.04.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/962e53e6-374a-02e0-53c6-e39db0816baf.png)

`Refresh` 押しても無反応。分かりづらい。

Unityを開き直すことでやっと認識されました。

![スクリーンショット 2019-09-29 17.06.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/8aafe71b-8d4c-fa51-dd4f-0c2247b05e57.png)

## スタジオとタイトルを選択

Settingsタブからブラウザで作成したスタジオとタイトルを選択しておきます。

![スクリーンショット 2019-09-29 17.07.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/1ff6db25-ffa7-27d1-00e8-d39e2bc2666b.png)

## 匿名ログイン

PlayFabには標準でLoginAPIがたくさん用意されてるようです。

<img width="493" alt="スクリーンショット 2019-09-29 17.14.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/48792c34-345d-7219-ca32-2467b4ae35ba.png">

今回はただの練習なので `LoginWithCustomID` でログインしてみます。（IDも固定値)

```PlayFabLogin.cs
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;

public class PlayFabLogin : MonoBehaviour
{
    public void Start()
    {
        var request = new LoginWithCustomIDRequest {CustomId = "MyCustomId", CreateAccount = true};
        PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
    }

    private void OnLoginSuccess(LoginResult result)
    {
        Debug.Log("Congratulations, you made your first successful API call!");
    }

    private void OnLoginFailure(PlayFabError error)
    {
        Debug.LogWarning("Something went wrong with your first API call.  :(");
        Debug.LogError("Here's some debug information:");
        Debug.LogError(error.GenerateErrorReport());
    }
}
```

これをMainCameraとか適当なGameObjectにはっつけて実行。

`Congratulations, you made your first successful API call!`

とログが出ました。



管理画面でプレイヤーを見ると１名増えています。

![スクリーンショット 2019-09-29 17.19.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59975/7398c15e-7fee-5618-e0b3-0d35dacfed6d.png)

さらに詳細を見るとスクリプトで設定した `MyCustomId` というカスタムIDとリンクしていることも確認できました。

TwitterやFacebooko連携とかを行うとさらにここに追加されるのでしょう。きっと。

## まとめ

SDKインストールしてUnityから匿名ログインするところまで〜だととても簡単でした。

少しずつ他の機能も試していきます。
 
## その他のドキュメント

この辺りをみていけば分かりそうな感じですね。

https://docs.microsoft.com/ja-jp/gaming/playfab/#pivot=documentation&panel=playfab