JackMasaki’s blog

掲載した記事ネタや作ったアプリ、参加したイベントレポートなどを掲載します

PlayFabでアバター画像のURLを引っ張ってこようとして詰まった話

今回はタイトルにある通り"PlayFabでPlayerのアバター画像のURLを引っ張ってこようとして詰まった話"です。

PlayFabに関してはこちら

jackmasaki.hatenablog.com

そもそもの話、アバター画像のURL(AvaterURL)というのはなんぞやというと、 PlayFabの各Playerごとにもっているアカウント情報の1つになります。

f:id:JackMasaki:20200314223926p:plain

アバター画像のURL(AvaterURL)はStringで保存されていて、ユーザーごとにアイコン画像を設定する際などに使えます。

試しにURLを設定してみると...

f:id:JackMasaki:20200314224537p:plain

こんな感じでプレビューが表示されます。

じゃあこのURLをクライアント側に持ってこよう!となったときにどうするかというと、 アバター画像のURL(AvatarUrl)はGetPlayerProfileResultに含まれているため、GetPlayerProfileRequest()で持ってこれるはずです。

jackmasaki.hatenablog.com

というわけでアバター画像のURL(AvaterURL)を設定してGetPlayerProfileRequest()で呼んでみます。

f:id:JackMasaki:20200314225810p:plain

URLは"https://hogehoge"に設定し、わかりやすくするために表示名に"JackMasaki"と入れてみました。

Unityで通常通りPlayFabログインを行い、下記のコードで表示名とアバター画像のURL(AvaterURL)を持ってきてみます。

   private void GetProfile()
    {
        PlayFabClientAPI.GetPlayerProfile(new GetPlayerProfileRequest()
        ,result =>
        {
            var playerProfile = result.PlayerProfile;

            Debug.Log("表示名:" + playerProfile.DisplayName);
            Debug.Log("アバター画像のURL:" + playerProfile.AvatarUrl);

        }, error => Debug.Log(error.GenerateErrorReport()));
    }

結果をUnityのConsoleで確認します。

f:id:JackMasaki:20200314230857p:plain

???

表示名は取得できているようですが、アバター画像のURL(AvaterURL)が空になってます。

Debug.Log(playerProfile.AvatarUrl);で中身を見てみると…

f:id:JackMasaki:20200314231114p:plain

Nullやんけ…

なぜかなーと思いPlayFabのゲームマネージャーを眺めたりしていると…

f:id:JackMasaki:20200314231423p:plain

ゲームマネージャーのタイトルの設定→クライアントプロフィールオプションにアバターURLの項目がありました。 初期値がfalseになっていたので、チェックマークを入れて再度トライ!

f:id:JackMasaki:20200314231114p:plain

Nullやんけ...

docs.microsoft.com

ここを見ても取得できるような記述があります。 仕方がないので、GetPlayerProfileRequest()にProfileConstraintsを記述してリクエストを投げます。

    private void GetProfile()
    {

        var profileConstraints = new PlayerProfileViewConstraints()
        {
            ShowAvatarUrl = true
        };

        PlayFabClientAPI.GetPlayerProfile(new GetPlayerProfileRequest()
        {
            ProfileConstraints = profileConstraints
        }
        ,result =>
        {
            var playerProfile = result.PlayerProfile;

            Debug.Log("表示名:" + playerProfile.DisplayName);
            Debug.Log("アバター画像のURL:" + playerProfile.AvatarUrl);

        }, error => Debug.Log(error.GenerateErrorReport()));
    }

f:id:JackMasaki:20200314232420p:plain

ShowAvatarUrl = true;でURLゲットできました!…と思ったがよく見ると…??

f:id:JackMasaki:20200314232612p:plain

今度は表示名がNullやんけ…

というわけで

        var profileConstraints = new PlayerProfileViewConstraints()
        {
            ShowDisplayName = true,
            ShowAvatarUrl = true
        };

PlayerProfileViewConstraintsに ShowDisplayName = trueを追加してあげました。

f:id:JackMasaki:20200314233158p:plain

これにて一件落着です。