🐡
【Unity】PlayFabでランキング実装
できるようになること
・匿名ログイン
・ランキングボードの作成
・ランキングへ送信
・ランキングの取得
などのランキング簡易実装
対象者
・PlayFab試してみたいけどちょっと面倒だから15分ぐらいで試せるものない?って方
この記事の動画
必要パッケージ
・https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/unity3d/quickstart
コード
using PlayFab;
using PlayFab.ClientModels;
using System.Collections.Generic;
using UnityEngine;
public class PlayFabController : MonoBehaviour
{
const string STATISTICS_NAME = "HighScore";
void Start()
{
PlayFabClientAPI.LoginWithCustomID(
new LoginWithCustomIDRequest { CustomId = "TestID", CreateAccount = true},
result => Debug.Log("ログイン成功!"),
error => Debug.Log("ログイン失敗"));
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
SubmitScore(400);
}
if (Input.GetKeyDown(KeyCode.R))
{
RequestLeaderBoard();
}
}
void SubmitScore(int playerScore)
{
PlayFabClientAPI.UpdatePlayerStatistics(
new UpdatePlayerStatisticsRequest
{
Statistics = new List<StatisticUpdate>()
{
new StatisticUpdate
{
StatisticName = STATISTICS_NAME,
Value = playerScore
}
}
},
result =>
{
Debug.Log("スコア送信");
},
error =>
{
Debug.Log(error.GenerateErrorReport());
}
);
}
void RequestLeaderBoard()
{
PlayFabClientAPI.GetLeaderboard(
new GetLeaderboardRequest
{
StatisticName = STATISTICS_NAME,
StartPosition = 0,
MaxResultsCount = 10
},
result =>
{
result.Leaderboard.ForEach(
x => Debug.Log(string.Format("{0}位:{1} スコア{2}", x.Position + 1, x.DisplayName, x.StatValue))
);
},
error =>
{
Debug.Log(error.GenerateErrorReport());
}
);
}
}
参考サイト
・ https://azure.microsoft.com/ja-jp/services/playfab/
・ https://qiita.com/_y_minami/items/9143502f465ad11ff2ca
・ https://zenn.dev/nekojoker/articles/38f1654ee254f482dfce
スタジオしまづ
Discussion