PlayFabでアバター画像のURLを引っ張ってこようとして詰まった話
今回はタイトルにある通り"PlayFabでPlayerのアバター画像のURLを引っ張ってこようとして詰まった話"です。
PlayFabに関してはこちら
そもそもの話、アバター画像のURL(AvaterURL)というのはなんぞやというと、 PlayFabの各Playerごとにもっているアカウント情報の1つになります。
アバター画像のURL(AvaterURL)はStringで保存されていて、ユーザーごとにアイコン画像を設定する際などに使えます。
試しにURLを設定してみると...
こんな感じでプレビューが表示されます。
じゃあこのURLをクライアント側に持ってこよう!となったときにどうするかというと、 アバター画像のURL(AvatarUrl)はGetPlayerProfileResultに含まれているため、GetPlayerProfileRequest()で持ってこれるはずです。
というわけでアバター画像のURL(AvaterURL)を設定してGetPlayerProfileRequest()で呼んでみます。
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で確認します。
???
表示名は取得できているようですが、アバター画像のURL(AvaterURL)が空になってます。
Debug.Log(playerProfile.AvatarUrl);で中身を見てみると…
Nullやんけ…
なぜかなーと思いPlayFabのゲームマネージャーを眺めたりしていると…
ゲームマネージャーのタイトルの設定→クライアントプロフィールオプションにアバターURLの項目がありました。 初期値がfalseになっていたので、チェックマークを入れて再度トライ!
Nullやんけ...
ここを見ても取得できるような記述があります。 仕方がないので、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())); }
ShowAvatarUrl = true;でURLゲットできました!…と思ったがよく見ると…??
今度は表示名がNullやんけ…
というわけで
var profileConstraints = new PlayerProfileViewConstraints() { ShowDisplayName = true, ShowAvatarUrl = true };
PlayerProfileViewConstraintsに ShowDisplayName = trueを追加してあげました。
これにて一件落着です。